我想實現一個抽象的Hierarchy類。任何Hierarchy對象都應該有一個父級(可以爲null)和一組子級,這兩個子級與具體的Hierarchy實現類型完全相同。這可以用泛型來完成,如果沒有,有什麼機制來強化這種關係?用泛型強制類聲明
這裏是我至今想,但也有問題:
public abstract class Hierarchy<T extends Hierarchy<T>> {
private T parent;
private Set<T> children;
public T getRoot() {
if(parent == null) {
return this;
} else {
return parent.getRoot();
}
}
}
問題是與return this
。它給出了編譯錯誤,因爲this
的類型爲Hierarchy
,而不是T
。我無法施展它,因爲我實際上並不保證this
的類型爲T
。下面的聲明會編譯得很好:
public class B extends Hierarchy<B> {...}
public class A extends Hierarchy<B> {...}
那麼有沒有什麼辦法可以禁止A extends Hierarchy<B>
聲明?
看起來這仍然將是有益的做'層次>' –
Jaws212
2014-10-07 01:12:58