[英]Java abstract classes/interfaces and specifying type parameters
现在,我正在实现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中指定?
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>
在第一个示例中,如果没有方法实现,则将抽象类更改为接口。
请记住,一个类只能彼此继承,但可以实现多个接口
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.