我想实现一个抽象的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