15

次のコードがありますが、すべてのジェネリックと混同しています。

public static <T> List<T> backwards (List<? super T> input) {  
       List<T> output = new ArrayList<T>();  
       return output;  
}

私の理解ではbackwards、 List インターフェイスを実装して arraylist を返す arraylist を作成するという名前のパブリック メソッドがあるということです。私の質問は、次の部分でコンパイラに実際に言っていることです......

static <T> List<T> backwards (List<? super T> input)
4

3 に答える 3

45

あなたはコンパイラに言っています:

<T>

「このメソッドの任意の型を宣言してTいます。これは、メソッドの呼び出しごとに任意の型 (非プリミティブ) にすることができます。」

List<T>

「このメソッドはList、そのタイプの要素を含むを返しTます。」

List<? super T> input

「このメソッドは、タイプ の要素を含む、または の任意のスーパータイプinputであるというパラメータを受け取ります。たとえば、がの場合、、、またはListTTTIntegerinputList<Integer>List<Number>List<Object>

于 2012-07-03T03:48:22.650 に答える
2

これは、ジェネリック メソッドを宣言する方法です。次の部分を読んでください。そうすれば、必要なすべてが得られます。

http://docs.oracle.com/javase/tutorial/extra/generics/methods.html

于 2013-11-14T17:05:22.773 に答える