Javaでジェネリック型のインスタンスを作成しますか?質問する

Javaでジェネリック型のインスタンスを作成しますか?質問する

Java でジェネリック型のインスタンスを作成することは可能ですか? 私が見た限りでは、答えはno(型の消去による) だと考えていますが、私が見逃している点が誰かにわかると嬉しいです。

class SomeContainer<E>
{
    E createContents()
    {
        return what???
    }
}

編集:それはスーパータイプトークン私の問題を解決するために使用できますが、以下の回答のいくつかが示しているように、多くのリフレクションベースのコードが必要になります。

しばらくこれを公開して、イアン・ロバートソンのものと劇的に異なるものを誰かが思いつくかどうか見てみよう。アルティマの記事

ベストアンサー1

正解です。 はできませんnew E()。しかし、 に変更することはできます。

private static class SomeContainer<E> {
    E createContents(Class<E> clazz) {
        return clazz.newInstance();
    }
}

面倒です。でも、うまくいきます。ファクトリーパターンでラップすると、少しは耐えられるようになります。

おすすめ記事