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