|
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) { /* ... */ }