使用原始类型的可比较

时间:2014-06-21 17:18:40

标签: java polymorphism binary-tree comparable

第一次发帖。无法找到答案,所以这里是:

简介:这是我作业的一部分。赋值是在整数二叉树上工作。前三个步骤是编写十几种方法来操作和使用树,如添加新节点,计数,遍历,求和等。第四部分需要为字符串创建完全相同的类,其中值将使用compareTo方法进行比较

问题:分配的下一步需要使用多态来允许节点接受int或string。由于我在上一次演讲中只是简单地介绍了这一点,我发现自己在过去的几个小时里一直在寻找解决方案,但没有成功。

代码:

public class Node<T extends Comparable<T>> {

    T val;
    Node<T> left, right;

    public Node(T val) {
        this.val = val;
        this.left = null;
        this.right = null;
    }

    public Node<T> insert(Node n, T v) {

        if (n == null) { 
            return new Node(v);
        }

        if (v.compareTo(n.val) == 0) {
            return n;
        }

        if (v.compareTo(n.val) < 0) {
            n.left = insert(n.left, v);
        } else {
            n.right = insert(n.right, v);
        }
        return n;
    }
    ...
}

问题是在Raw类型上使用compareTo()。我无法在任何地方找到比较两个对象/原始类型的方法。我尝试了很多变化,通常都有类似的结果。调试器不断提醒我&#34;不兼容的类型:Comparable不能转换为T&#34;。我将如何实现Comparable以使这个二叉树工作?

1 个答案:

答案 0 :(得分:1)

似乎,它就像参与传递的Node一样简单。

public Node<T> insert(Node<T> n, T v)

另一个解决方案是让Node本身实现Comparable

public class Node<T extends Comparable<T>> implements Comparable<Node<T>> {
    // ...
}