为什么我必须这样做?
public <T> void myMethod(MyClass<T> value){
}
为什么我必须提到<T>两次?
第一个<T>声明您的方法具有泛型参数。
第二个<T>指定MyClass<>类的泛型参数的值。(就像MyClass<string>)
第一个<T>声明您正在使用模板化方法。说以下话也很恰当:
public void myMethod(MyClass<?> value){
}
您还可以像这样在类级别声明泛型参数:
public class MyClass<T> {
public void myMethod(MyClass<T> value){
}
}
The outer <T> says 'this is a generic method' and also gives you the chance to place bounds on T, for example T extends Comparable<T>. You wouldn't want to be repeating all that for every parameter that used T.
实际上,第一个定义了在您的函数中使用了一个泛型类,第二个 MyClass<T>值表示您的类的泛型类型T在List<String>哪里String可以是您的T.