クラスの属性のタイプが一般的で実行時に決定されるという要件があります。したがって、私はクラス定義の下で考えました。Javaクラスの属性にジェネリックを使用する
オブジェクトを作成する前に、その型を知っています。だから私はどのようにインスタンス化するのだろうか。私は以下を試みたが、コンパイルエラーが出る。正しい方法はなんですか?
Object obj = getObjFromFactory() // obj can be type say A.class or B.class. I wish to get the class of obj and pass it to Generics
Generics<obj.class> generics = new Generics<obj.class>();
https://stackoverflow.com/documentation/java/92/generics/388/creating-a-generic-class#t=20170622092158177626 – JEY
注:それはそれだけで()'となるので、 'Sample.class'を使う必要はありません。 –
Thomas
?
を使用する可能性がありますできない場合'_raw_型を作成します。これはジェネリックチェックが無効になることを意味します。また、型がクラスであるため、 'New GenericsここではXY問題があると思います。実行時にJavaの汎用クラスの型を決定することはできません。 Javaジェネリックはコンパイル時のコンストラクトです。実行時にはすべてのジェネリックが消去されます。したがって、コンテキストと、作業中の属性と、実行時に決定する必要のあることを私たちに伝える必要があります。おそらく、ジェネリック以外のものを選択する手助けをすることができます。 – RealSkeptic