1

なぜ私はこのようにしなければならないのですか?

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

}

なぜ<T>二度言及しなければならないのですか?

4

4 に答える 4

1

1つ目<T>は、メソッドがジェネリックパラメーターを持つものとして宣言します。

2番目は、クラス<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

外側の <T> は「これはジェネリック メソッドです」と言い、T に境界を設定する機会も与えます。たとえば、T は Comparable<T> を拡張します。T を使用するすべてのパラメーターに対して、すべてを繰り返したくないでしょう。

于 2013-01-04T21:35:52.683 に答える
0

実際、最初の値は関数でジェネリッククラスが使用されていることを定義し、2番目の MyClass<T>値はクラスのジェネリック型がどこTにあるかを示しています。List<String>StringT

于 2013-01-04T18:14:18.567 に答える