现在我实现Tree<T>
(<T>
是指根节点的数据值)抽象类,目前有类似这样的内容:
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中指定它?
答案 0 :(得分:-1)
Tree<T>
将包含T
类型的对象Tree<String> tree;
T可以是另一种通用类型描述
Tree<Tree<String>>
然后从中添加或删除T对象
Public void setChild(int index, T child);
public void deleteChild(int index, T child);
如果要将T指定为限制性更强的类型
<T extends class>
<T implements interface>
<T super class>
在第一个示例中,如果您没有方法实现,请将抽象类更改为接口。
请记住,一个类只能继承一次,但可以实现多个接口