做和做有什么区别
public class BST<Key extends Comparable<Key>, Value> {
public class Node<Key, Value> {
Key key;
Value val;
}
}
和做
public class BST<Key extends Comparable<Key>, Value> {
public class Node {
Key key;
Value val;
}
}
即内部类的类型参数重要吗? 哪种实现方式更好?
最佳答案
您似乎认为这两者是等价的 - 但事实并非如此。 上面的例子声明了两个泛型类,下面的例子声明了一个泛型类和一个非泛型内部类。
例如,在顶部声明中,您可以创建这样的实例...
BST<MyComparable, String>.Node<Integer, Boolean> x = new ...
...因为类型参数在两个类之间是不同的 - 您刚刚选择为内部泛型类型参数赋予与外部类中的类型参数相同的名称,但是它们没有关系。
如果您在第二个示例中尝试这样做,您将收到错误消息,因为内部类 Node
不是通用的。在第二个示例中,Node
字段的类型必须匹配外部类型参数。
关于java - Java内部类写类型参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32290637/