为什么我必须这样做?
public <T> void myMethod(MyClass<T> value){
}
为什么我必须两次提及<T>
?
答案 0 :(得分:1)
第一个<T>
声明您的方法具有通用参数。
第二个<T>
指定了MyClass<>
类的泛型参数的值。 (就像MyClass<string>
)
答案 1 :(得分:1)
第一个<T>
声明您正在使用模板化方法。如下所述:
public void myMethod(MyClass<?> value){
}
您也可以在类级别声明泛型参数:
public class MyClass<T> {
public void myMethod(MyClass<T> value){
}
}
答案 2 :(得分:1)
外部&lt; T&gt;说'这是一种通用方法'并且还让你有机会在T上放置边界,例如T扩展Comparable&lt; T&gt;。您不希望为使用T的每个参数重复所有这些。
答案 3 :(得分:0)
实际上,第一个定义了您的函数中使用了泛型类,第二个MyClass<T>
值表示T
类List<String>
中类的泛型类型String
{ {1}}可以是您的T
。