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