这是我的代码:
public interface InterfaceA<J>{
// …
}
public interface InterfaceB extends InterfaceA<String> {
// …
}
public interface InterfaceC extends InterfaceA<Long>{
// …
}
public class Creator<J, I extends InterfaceA<J>> {}
public abstract class Base<J, J1> implements InterfaceA<J> {
protected Creator<J, J1> creator;
protected Base() {
creator=ObjectCreator.createCreator();
}
}
public class Extension1 extends Base<Integer> implements InterfaceB {
// …
}
public class Extension2 extends Base<Double> implements InterfaceC {
// …
}
我想Extension1
拥有Creator<Integer, InterfaceB>
和Extension2
拥有Creator<Double, interfaceC>
。看到图案了吗?Creator<T1, T2>
其中T1
是直接父类的类型,并且T2
是由所述类实现的接口。有没有办法做到这一点?任何人都可以告诉代码ObjectCreator.createCreator()
吗?
现在我的代码如下所示:
public class ObjectCreator {
public static <J, I extends InterfaceA<J>> Creator<J, I> createCreator() {
return new Creator();
}
}
我的代码中到处都是错误。我真的很困惑。我在这里想念什么?