次のコードがあります。
class MyClass<T>{
public void method(){
List<T>= new ArrayList<T>();
}
}
次の理由は正しいですか?非静的メソッドから型パラメーターArrayList<T>
であるをインスタンス化しようとしています。の特定のインスタンスで必要です。インスタンス化の場合、コンパイラは型を明示的に認識している必要があります。私が理解したように、コンパイラは非静的コンテキストで型パラメーターを既知としてマークするため、インスタンス化できます。T
method
MyClass<T>
MyClass<T>
T
T
ArrayList<T>
しかし、次のコードを書くと:
class MyClass<T>{
public void method(){
List<T>= new ArrayList<T>();
new T();// Compile Error
}
}
コンパイル エラーが発生しました。抽象ファクトリ パターンを適用したり、そのニーズにリフレクションを使用したりできることはわかっています。ただし、new
演算子には特定の型が必要です。型パラメータT
は非静的コンテキストに固有です。どこで私は間違った推論をしましたか?