假设我有一个Foo类,A类和A的一些子类B.Foo接受A及其子类作为泛型类型。 A和B在构造函数中都需要一个Foo实例。我想A的富是A型和B的富是B型或B的所以实际上是一个超类的,所以我只希望这样的:Java:使用通用通配符与子类化
Foo<X> bar = new Foo<X>;
new B(bar);
是可能的,如果X是A, B,或A的两个子类和超类B.
的到目前为止,这是我:
class Foo<? extends A>{
//construct
}
class A(Foo<A> bar){
//construct
}
class B(Foo<? super B> bar){
super(bar);
//construct
}
到super(...)
调用不起作用,因为<A>
比<? super B>
严格。在执行这些类型时是否可以使用构造函数(或通过其他方式避免代码重复)?
编辑:Foo保留泛型参数类型的元素的集合,并且这些元素和Foo具有双向链接。因此应该不可能将A链接到Foo。
这看起来并不是你的实际代码。 – 2011-01-07 14:33:26
是的,它是代码的简化版本。你觉得我错过了什么吗? – gibberish 2011-01-07 14:48:47