为什么我必须这样做?
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
.