Spec-Zone .ru
спецификации, руководства, описания, API
|
Компилятор Java также стирает параметры типа в универсальных параметрах метода. Рассмотрите следующий универсальный метод:
// Counts the number of occurrences of elem in anArray. // public static <T> int count(T[] anArray, T elem) { int cnt = 0; for (T e : anArray) if (e.equals(elem)) ++cnt return cnt; }
Поскольку T неограничен, компилятор Java заменяет его Object:
public static int count(Object[] anArray, Object elem) { int cnt = 0; for (Object e : anArray) if (e.equals(elem)) ++cnt; return cnt; }
Предположите, что следующие классы определяются:
class Shape { /* ... */ } class Circle extends Shape { /* ... */ } class Rectangle extends Shape { /* ... */ }
Можно записать универсальный метод, чтобы потянуть различные формы:
public static <T extends Shape> void draw(T shape) { /* ... */ }
Компилятор Java заменяет T Shape:
public static void draw(Shape shape) { /* ... */ }