0
我想實現一個通用的二叉樹。下面是節點類的聲明java:綁定時使用泛型不匹配
public abstract class Node<E extends Comparable<E>> {
}
一個具體的節點:
public class BinaryTreeNode extends Node<BinaryTreeNode> implements
Comparable<BinaryTreeNode> {
@Override
public int compareTo(final BinaryTreeNode node) {
if (this == node) {
return 0;
}
return this.getValue().compareTo(node.getValue());
}
}
抽象的樹類
public abstract class BinaryTree<T extends Node<T>> {
/**
* TODO.
*/
public BinaryTree() {
}
/**
* TODO.
*
* @param node TODO
*/
public abstract void addNode(final T node);
/**
* TODO.
*
* @param node TODO
*/
public abstract void removeNode(final T node);
}
這是因爲T參數在那裏我得到的約束不匹配,的節點。我曾嘗試將它擴展爲Comparable,但我不能將其應用於工作。我該如何申報?我想讓二叉樹能夠與擴展Node的所有類一起工作。
這裏有一個具體的樹:
public class ConcreteBinaryTree extends BinaryTree {
private Node root;
@Override
public void addNode(Node node) {
// TODO Auto-generated method stub
}
@Override
public void removeNode(Node node) {
// TODO Auto-generated method stub
}
}
如何,我需要在這裏添加類型參數?
感謝回覆!出於好奇:如果沒有類型交叉點,它也是可能的嗎? – user3629892
你可以有兩個類型參數'BinaryTree,N extends Node >'但這會更加冗長,強制調用者在聲明BinaryTree時總是明確地放置這兩個類型參數......我可以'沒想到其他選擇,但可能會有一些。 –
assylias
好的,非常感謝! – user3629892