2016-09-18 70 views
0

我有以下的代码,其中T型延伸相媲美,但我得到一个编译错误,当我尝试做泛型类型作用域不适用于内部类?

root.node.compareTo(分钟)。

说法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); 
    } 
} 

回答

2

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

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

+0

“(注意:还可以使用>)” 或更好的'>' – newacct