1

为什么我必须这样做?

public <T> void myMethod(MyClass<T> value){

}

为什么我必须提到<T>两次?

4

4 回答 4

1

第一个<T>声明您的方法具有泛型参数。

第二个<T>指定MyClass<>类的泛型参数的值。(就像MyClass<string>

于 2013-01-04T18:13:10.117 回答
1

第一个<T>声明您正在使用模板化方法。说以下话也很恰当:

public void myMethod(MyClass<?> value){

}

您还可以像这样在类级别声明泛型参数:

public class MyClass<T> {

    public void myMethod(MyClass<T> value){
    }
}
于 2013-01-04T18:13:45.603 回答
1

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.

于 2013-01-04T21:35:52.683 回答
0

实际上,第一个定义了在您的函数中使用了一个泛型类,第二个 MyClass<T>值表示您的类的泛型类型TList<String>哪里String可以是您的T.

于 2013-01-04T18:14:18.567 回答