给定这样的接口
public interface MyInterface1<T extends MyAbstractClass> {
...
}
我想制作另一个接口 MyInterface2 将 MyInterface1 作为泛型类型,在 MyInterface2 中我想引用实际 MyInterface1 的实际类型
public interface MyInterface2<INTERFACE extends MyInterface1<MYCLASS>> {
MYCLASS returnInstanceOfMyClass();
}
所以我想说,方法“returnInstanceOfMyClass”返回给 MyInterface2 的实际 MyInterface1 的实际 T。
问题是我不允许写以下内容
public interface MyInterface2<INTERFACE extends MyInterface1<MYCLASS>> {
我被允许写作
public interface MyInterface2<INTERFACE extends MyInterface1<?>> {
但后来我无法在 MyInterface2 的方法签名中引用 MyInterface1 中 T 的实际类型 - 因为我没有给它指定在引用时使用的名称。
我希望能够以类型安全的方式执行以下操作
class MyClass extends MyAbstractClass {
...
}
MyClass c = new MyInterface2<MyInterface1<MyClass>>.returnInstanceOfMyClass();
不需要强制转换为 MyClass,因为它可以看到赋予 MyInterface2 的 MyInterface1 的实际类是 MyClass,这就是从 returnInstanceOfMyClass 返回的内容。
怎么做?