2010-06-10 3 views

ответ

6

Ниже не синтаксис

<ArgType>genericMethod() 

Кажется, что аргументы типа должны прийти после точки, как в

SomeClass.<ArgType>genericMethod() 
this.<ArgType>genericMethod() 
p.<ArgType>genericMethod() 
super.<ArgType>genericMethod() 
SomeClass.super.<ArgType>genericMethod() 
SomeClass.this.<ArgType>genericMethod() 
48

Согласно Java specification, что было бы, например:

Collections.<String>unmodifiableSet() 

(Извините за вопрос и ответ на мой собственный вопрос - я просто смотрел это на третий раз :-)

+3

Как я понимаю, отвечая на свой вопрос вполне приемлемо , пока это не дубликат (т. е. не переходите к этой поисковике). –

+0

Если это для потомков, может также исправить опечатку в примере ;-). –

+0

Возможно, вы должны принять свой собственный ответ :) – bacar

4

A. хороший пример из 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 tutorial on generic type parameters.

+3

Возможно, вы можете развернуть это с помощью части, в которой явно указывается параметр типа для вызова (сравните мой ответ). Тогда это был бы хороший канонический ответ; поскольку он даже не отвечает на вопрос, поскольку параметр выводится неявно компилятором в вызове. :-) –

Смежные вопросы