さて、実装に内部クラスがあるパラメトリック インターフェイスがあります。それ自体はパラメーター化されておらず、暗黙的にのみ外側のクラスの型パラメーターを使用するため、内部クラスの完全な (ジェネリック) 型を参照することはできないようです。
public interface TestA<R> {
public Class<? extends R> getTheRClass();
}
public class TestB<Z> implements TestA<TestB<Z>.InnerStuff> {
public class InnerStuff {
List<R> iCantBeStatic;
}
InnerStuff myStuff;
@Override
public Class<? extends TestB<Z>.InnerStuff> getTheRClass() {
// return InnerStuff.class;
// return myStuff.getClass();
// return TestB.InnerStuff.class;
// return TestB<Z>.InnerStuff.class;
throw new AngryProgrammerException();
}
}
問題のクラスを返し、コンパイラに正しい型を認識させる方法はありますか?? はい、問題を回避する 1,001 の方法があることを知っています (内部クラスを静的にする、内部クラスがないようにリファクタリングするなど) そのオーバーライドで機能する式があるかどうかを知りたい、またはそのような表現が存在しない場合...