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