用于在方法调用中显式指定泛型参数的Java语法
显式给出泛型Java方法的类型参数的语法是什么?根据,例如:用于在方法调用中显式指定泛型参数的Java语法,java,generics,Java,Generics,显式给出泛型Java方法的类型参数的语法是什么?根据,例如: Collections.<String>unmodifiableSet() Collections.unmodifiableSet() (很抱歉问和回答我自己的问题-我刚刚第三次查找此问题。:-来自java.util.Collection的一个很好的示例,指定一个定义自己的泛型类型的泛型方法,方法签名如下所示: <T> T[] toArray(T[] a); 另外,请参见。以下是而不是语法 <Arg
Collections.<String>unmodifiableSet()
Collections.unmodifiableSet()
(很抱歉问和回答我自己的问题-我刚刚第三次查找此问题。:-来自
java.util.Collection
的一个很好的示例,指定一个定义自己的泛型类型的泛型方法,方法签名如下所示:
<T> T[] toArray(T[] a);
另外,请参见。以下是而不是语法
<ArgType>genericMethod()
genericMethod()
似乎类型参数必须位于点之后,如中所示
SomeClass.<ArgType>genericMethod()
this.<ArgType>genericMethod()
p.<ArgType>genericMethod()
super.<ArgType>genericMethod()
SomeClass.super.<ArgType>genericMethod()
SomeClass.this.<ArgType>genericMethod()
SomeClass.genericMethod()
this.genericMethod()
p、 genericMethod()
super.genericMethod()
SomeClass.super.genericMethod()
SomeClass.this.genericMethod()
也许您可以将其扩展为关于显式为调用提供类型参数的部分(比较我的答案)。那么这将是一个很好的标准答案;实际上,它甚至没有回答这个问题,因为参数是由编译器在调用中隐式推导的。:-)对于导入静态
方法,这将如何工作?它没有附加到类或此
,并且当您声明列出的第一个语法不起作用时。@Coderer那么静态方法必须在某个类中,因此您可以使用SomeClass.genericMethod()
。如果未导入该类,则使用该类的FQN。我相信你知道这一点,并希望得到一个更令人满意的答案。我个人不明白为什么不能将genericMethod()
语法添加到语言中;这会产生歧义吗?实际上我没有尝试类的FQN,我只是从import static pack.MyClass.someMethod切换;somethod()代码>到导入pack.MyClass;MyClass.someMethod()
,但当然,它仍然比您在回答中给出的“希望它能工作”反例更详细。这称为类型见证。是的。有时类型参数称为类型见证。很高兴知道这一点,我以前不知道。JLS使用术语类型参数。Java教程的泛型跟踪有时使用类型参数,有时使用类型见证。
SomeClass.<ArgType>genericMethod()
this.<ArgType>genericMethod()
p.<ArgType>genericMethod()
super.<ArgType>genericMethod()
SomeClass.super.<ArgType>genericMethod()
SomeClass.this.<ArgType>genericMethod()