Java では、型パラメーターのインスタンスを作成できないことを知っています。多くの記事では、単純に「Type Erase」が理由として挙げられています。しかし、型パラメーターの初期化は型消去の前に発生しませんか? Type Erase が唯一の理由ですか? 次に例を示します。
public class GenObj {
public static <E> void append(List<E> list) {
E elem = new E(); // compile-time error
list.add(elem);
}
public static main(){
List<String> list= new ArrayList<String>();
GenOjb.append<String>(list);
}
}
GenOjb.append(list) を使用してジェネリック メソッドを呼び出すと、コンパイラはメソッド内の E を最初に String に置き換えてから、"Type Erase" を実行すると思いますが、それは正しいですか? もしそうなら、E が実際にデフォルトのコンストラクターを持っていることを保証する方法がある限り、型パラメーターのインスタンスを作成できるはずです。Java がパラメーター型のインスタンスの作成を許可しない理由を誰かが詳しく説明できますか? ありがとう。