2010-06-10 43 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

據我瞭解,在回答自己的問題是完全可以接受的,只要它不是重複的(即不要以這種方式進行rep-hunting)。 – 2010-06-10 08:46:55

+0

如果是爲了後代,不妨糾正示例中的錯字;-)。 – 2010-06-10 15:00:39

+0

你或許應該接受你自己的答案:) – bacar 2012-11-27 20:19:38

4

一個。從指定定義其自己的通用類型的通用方法的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

也許你可以用大約明確地給出一個類型參數來調用(比較我的答案)的部分擴大這個。那麼這將是一個很好的經典答案;因爲它甚至不回答這個問題,因爲該參數是由編譯器在調用中隱含地推導出的。 :-) – 2011-01-14 12:43:57