现在我实现Tree<T>
(<T>
指根节点的数据值)抽象类,目前有这样的事情:的Java抽象类/接口和指定类型参数
public abstract class Tree<T> {
public void setChild(int index, ??? childTree);
public void deleteChild(int index, ??? childTree);
public T getData();
public void setData(T value);
}
正如你可以看到,我很难找出儿童树的正确类型。理想情况下,我会做这样的事情
public abstract class Tree<T> {
public void setChild(int index, ImplementingClass childTree);
public void deleteChild(int index, ImplementingClass childTree);
...
}
但我不知道如何做到这一点(可能会重新读取文档)。目前的解决方案我想到的是这样的
public abstract class Tree<T, C extends Tree> {
public void setChild(int index, C childTree);
public void deleteChild(int index, C childTree);
...
}
但更正确的解决办法是指定一个子树必须是同一类作为当前的树。有没有办法在Java中指定它?
什么是'T' ???? – sidgate
Java中没有自我类型。你心目中的内容大多是正确的。它应该是'Tree>'。 –
shmosel
它真的必须是相同的实现吗?没有'Tree'作为一个足够好的参数? –