我正在查看实现二叉搜索树的 Java 代码 here我认为如果内部类 Node
实际上变成 static nested class 会更好.但是,在前面添加 static
关键字(我想我可以这样做,因为内部类实际上并没有在任何地方使用封闭类的实例——我可以在 Node
内部类作为 BST.this
-- 绑定(bind)到它)导致多个错误,这些错误不是很有用。
据我所知,java.util.LinkedList
和类似的也使用静态嵌套类来定义存储在内部的节点并且也是参数化的(当然,工作没有任何问题).有人愿意详细说明吗?
谢谢。
最佳答案
如果你使内部类static
,您将丢失周围类的类型参数。 Node
无法访问 Key
和 Value
,因为它不再与 BST
的实例关联.您可以通过将类型参数添加到 Node
来解决此问题也是:
private class Node<NodeKey extends Comparable<NodeKey>, NodeValue> {
private NodeKey key; // sorted by key
private NodeValue val; // associated data
private Node<NodeKey, NodeValue> left, right; // left and right subtrees
private int N; // number of nodes in subtree
public Node(NodeKey key, NodeValue val, int N) {
this.key = key;
this.val = val;
this.N = N;
}
}
并替换所有出现的 Node
与 Node<Key, Value>
关于java - 参数化类中的静态嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25367999/