Хорошим примером из java.util.Collection
определения универсального метода, который определяет его собственный универсальный тип, является Collection.toArray
, где сигнатура метода выглядит так:
<T> T[] toArray(T[] a);
Здесь объявляется универсальный тип T, который определяется при вызове метода параметром T[] a
и возвращает массив T. Поэтому тот же экземпляр может вызывать метод toArray в общем виде:
Collection<Integer> collection = new ArrayList<Integer>();
collection.add(1);
collection.add(2);
// Call generic method returning Integer[]
Integer[] ints = collection.toArray(new Integer[]{});
// Call generic method again, this time returning an Number[] (Integer extends Number)
Number[] nums = collection.toArray(new Number[]{});
Также см. Учебник Java по по параметрам универсального типа .