ここに私が持っているものがあります:
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 をインスタンス化するにはどうすればよいですか?