泛型类型作用域不适用于内部 class?
generic type scope does not apply to inner class?
我有以下代码,其中类型 T 扩展了 Comparable,但是当我尝试这样做时出现编译错误
root.node.compareTo(min).
说 compareTo 不适用。似乎通用类型范围不适用于内部 class?
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);
}
}
当你说 public class Node<T>
时,你会从外部 class 遮蔽 <T>
。您应该从内部 class 声明中删除 <T>
,或者更好的是,使内部 class 成为静态嵌套 class (因为没有内在原因节点需要知道关于它所依附的树)。
(注:也用<T extends Comparable<T>>
。)
我有以下代码,其中类型 T 扩展了 Comparable,但是当我尝试这样做时出现编译错误
root.node.compareTo(min).
说 compareTo 不适用。似乎通用类型范围不适用于内部 class?
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);
}
}
当你说 public class Node<T>
时,你会从外部 class 遮蔽 <T>
。您应该从内部 class 声明中删除 <T>
,或者更好的是,使内部 class 成为静态嵌套 class (因为没有内在原因节点需要知道关于它所依附的树)。
(注:也用<T extends Comparable<T>>
。)