【发布时间】:2011-03-31 18:34:29
【问题描述】:
考虑这段代码:
public class TreeNode<T extends TreeNode<T, E>, E> {
protected T parent;
protected E data;
protected List<T> children = new ArrayList<T>();
public TreeNode(T parent, E data) {
this.parent = parent;
this.data = data;
}
public T getRoot() {
if (parent == null) {
return this; //<---- Problem is here!
} else {
return getParent().getRoot();
}
}
public T getParent() {
if (parent == null) {
throw new RuntimeException("This already the parent!");
} else {
return parent;
}
}
}
/*
incompatible types
required: T
found: TreeNode<T,E>
*/
我该如何解决这个问题并让我的代码正常工作?
【问题讨论】:
-
是的,它消除了在
getParent().getRoot()之前转换的需要。我想知道如何删除return (T) this;中的最后一个演员
标签: java generics inheritance tree covariance