Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/308.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在方法调用中显式指定泛型参数的Java语法_Java_Generics - Fatal编程技术网

用于在方法调用中显式指定泛型参数的Java语法

用于在方法调用中显式指定泛型参数的Java语法,java,generics,Java,Generics,显式给出泛型Java方法的类型参数的语法是什么?根据,例如: Collections.<String>unmodifiableSet() Collections.unmodifiableSet() (很抱歉问和回答我自己的问题-我刚刚第三次查找此问题。:-来自java.util.Collection的一个很好的示例,指定一个定义自己的泛型类型的泛型方法,方法签名如下所示: <T> T[] toArray(T[] a); 另外,请参见。以下是而不是语法 <Arg

显式给出泛型Java方法的类型参数的语法是什么?

根据,例如:

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()