java - 参数化类中的静态嵌套类

标签 java

我正在查看实现二叉搜索树的 Java 代码 here我认为如果内部类 Node 实际上变成 static nested class 会更好.但是,在前面添加 static 关键字(我想我可以这样做,因为内部类实际上并没有在任何地方使用封闭类的实例——我可以在 Node 内部类作为 BST.this -- 绑定(bind)到它)导致多个错误,这些错误不是很有用。

据我所知,java.util.LinkedList 和类似的也使用静态嵌套类来定义存储在内部的节点并且也是参数化的(当然,工作没有任何问题).有人愿意详细说明吗?

谢谢。

最佳答案

如果你使内部类static ,您将丢失周围类的类型参数。 Node无法访问 KeyValue ,因为它不再与 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;
    }
}

并替换所有出现的 NodeNode<Key, Value>

关于java - 参数化类中的静态嵌套类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25367999/

相关文章:

java - 在 java、OSB、XQuery 中从 XML 获取不同的值

javascript - 带有 JavaScript 警报/提示的 Android WebViewClient

java - Android 不保存 txt 文件

java - Sonar 规则 S2699 : Not all asserts are recognized as valid assertions

java - 在 Spring 中实例化 Util 类

Java:将标签标识符作为字符串传递

带有 TextFields 问题的 Java 插入查询

java - Android项目中应用程序图标的放置位置

java - 使用服务帐号列出 G Suite 上的云端硬盘文件时未经授权

java - JXTreeTable - 从外部应用程序操作复选框 - 可能吗?