アビシェークKeshri:
Javaでは、インスタンスの作成type
次のコードは動作しませんので、パラメータは、違法です:
class Gen<T> {
T ob;
Gen() {
ob = new T(); // Illegal!!!
}
}
この背後にある理由は次のとおりです。
Tは、オブジェクトの種類コンパイラのノウハウを作成するだろうか、その後、実行時には存在しません。
しかし、私が使用して、あることを理解しない何をerasure
するために変換されます、次のコードを:
class Gen {
Object ob;
Gen() {
ob = new Object(); // Perfectly Fine!!!
}
}
理由は次のとおりです。
Javaコードをコンパイルすると、すべての一般的なタイプの情報を削除(消去)されます。である彼らのバウンドタイプ、との型パラメータを交換する。この手段
Object
は明示的な境界が指定されていない場合。
なぜインスタンス化type
パラメータは違法でしょうか?
GhostCat敬礼モニカC.:
シンプル:それはので、T
何でもかまいません。
あなたが持っていると仮定Gen<Integer>
。サプライズ:整数んではないデフォルトコンストラクタを持っています。それでは、どのようにするつもりですnew Integer()
、その後?
コンパイラはできません知っているようにしていなことのためにデフォルトコンストラクタがあるかどうかT
。
java.lang.Object
明らかに、このようなコンストラクタを持っています。