0

関数内のマップに似た特定のデータ構造の型として、その場でメソッドに指定されたジェネリック型を使用しようとしていますが、宣言時に 1 つのクラスしか使用しません。キーを持つ ArrayList に似ています。だから、私がやろうとしていることは次のとおりです。

private final ArrayList<T extends Object> findGroup(final String key, final String classType)
{
     Class<?> c = Class.forName(classType);
     ArrayList<c.class> listOfStuff = new ArrayList<>();

     return listOfStuff;
 }

私が取得しているエラーは、.class 呼び出しで発生します。c.getClass() を試してみましたが、c.class から別の Class オブジェクトを作成して、それが機能するかどうかを確認しましたが、機能しませんでした。

これには好ましい方法がありますか?

はい、これのいくつかは少し処理が重い傾向があることを知っていますが、私がやっていることにはそれが必要です.

4

2 に答える 2

1

タイプ消去は、そのようなことが機能するのを防ぎます。基本的に、JVM はジェネリック型に関する知識を持たないため、実行時にのみ認識される型でジェネリックを初期化することはできません。したがって、型はコンパイル時に使用可能である必要があります。

于 2013-09-30T14:20:32.283 に答える