0

ここに私が持っているものがあります:

class Class1 <T>
{
     public void foo()
   {
      ParameterizedType parameterizedType = (ParameterizedType)getClass().getGenericSuperclass();
      Class<T> type = (Class<T>) parameterizedType.getActualTypeArguments()[0];
      System.out.println(type);
   }
}

class Class2 <G>
{
    public Class2 ()
    {
        Class1<G> class1 = new Class1<G>();
    }
}

しかし、class1.foo() を呼び出すと、パラメーターではなくスーパークラスが取得されます。

私が行った場合

Class1<String> class1 = new Class1<String>();

Class1 内で class1.foo() を呼び出すと、String が得られます。

Class2 のジェネリック型で Class1 をインスタンス化するにはどうすればよいですか?

4

1 に答える 1

0

それはいけません。実行時に、Class2そのジェネリック型引数が何であるかを知りません。

于 2012-12-18T22:45:22.397 に答える