私はジェネリックを理解しようとしています。以下のコードでは、 getDuplicate() の戻り値の型PlaceHolder<X,X>
に同じパラメーター X があり、正常にコンパイルされます。しかし、同じパラメーター型を使用すると、MyClass<T,T>
「型変数 T は既に定義されています」と表示されます。getDuplicate メソッドでそれがどのように可能であるかを誰かが説明できますか?
class PlaceHolder<K,V> {
public K k;
public K v;
public PlaceHolder(K k, K v){
this.k = k;
this.v = v;
}
public K get(){ return k; }
public static <X> PlaceHolder<X,X> getDuplicateHolder(X x){
return new PlaceHolder<X,X>(x,x);
}
}
class MyTest<T,T> {}