1. ホーム

[解決済み】Javaで汎用配列型が作れない理由は何ですか?

2022-03-30 13:53:10

質問

Javaで以下のことができない理由は何ですか?

private T[] elements = new T[initialCapacity];

.NETでは、実行時に異なるサイズを持つことができる値の型がありますが、Javaでは、すべての種類のTがオブジェクト参照になるため、同じサイズになります(間違っていたら訂正してください)からです。

その理由は何ですか?

解決方法は?

Javaの配列は(ジェネリックスと違って)実行時にその構成要素の型に関する情報を含むからです。そのため、配列を作成するときに構成要素の型がわかっていなければなりません。ということは T が実行時に存在しない場合、配列を作成することはできません。