假設我有一個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