泛型类型范围不适用于内部类?

时间:2016-09-18 03:23:11

标签: java generics comparable

我有以下代码,其中类型T扩展Comparable,但是当我尝试时出现编译错误

  

root.node.compareTo(分钟)。

说比较不适用。似乎泛型类型范围不适用于内部类?

public class Tree<T extends Comparable> {
    public class Node<T>{
        private T node;
        private Node<T> left;
        private Node<T> right;
        public Node(T node, Node<T> left, Node<T> right) {
            super();
            this.node = node;
            this.left = left;
            this.right = right;
        }       
    }
    public boolean isBalanced(Node<T> root){
        return isBalanced(root, Integer.MIN, Integer.MAX);
    }
    private boolean isBalanced(Node<T> root, T min, T max){
        if(root == null){
            return true;
        }
        if(root.node.compareTo(min) < 0 || root.node.compareTo(max) > 0){
            return false;
        }
        return isBalanced(root.left, min, root.node) || isBalanced(root.right, root.node, max);
    }
}

1 个答案:

答案 0 :(得分:2)

当您说public class Node<T>时,您将从外部类隐藏<T>。您应该从内部类声明中删除<T>,或者更好地使内部类成为静态嵌套类(因为节点不需要知道它所知道的树的内在原因)附于)。

(注意:也使用<T extends Comparable<T>>。)