开发者

Java-syntax for explicitly specifying generic arguments in method calls

开发者 https://www.devze.com 2023-01-02 19:04 出处:网络
What is the syntax for explicitly giving the type paramet开发者_开发问答ers for a generic Java method?The following is not the syntax

What is the syntax for explicitly giving the type paramet开发者_开发问答ers for a generic Java method?


The following is not the syntax

<ArgType>genericMethod()

It seems the type arguments must come after a dot as in

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


According to the Java specification that would be for example:

Collections.<String>unmodifiableSet()

(Sorry for asking and answering my own question - I was just looking this up for the third time. :-)


A good example from java.util.Collection of specifying a generic method which defines its own generic type is Collection.toArray where the method signature looks like:

<T> T[] toArray(T[] a);

This declares a generic type T, which is defined on method call by the parameter T[] a and returns an array of T's. So the same instance could call the toArray method in a generic fashion:

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[]{});

Also, see the java tutorial on generic type parameters.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号