这个10美元的树使用节点阵列

时间:2014-05-02 18:43:18

标签: java reference tree nested

我尝试使用嵌套节点实现树,节点本身有一个Node数组。 (见下面的代码) 当我实例化它并调试它时,我可以在起始节点内看到一个名为$ 0的引用,它基本上与实例化树本身的引用相同。我想知道是否有人能告诉我它为什么存在以及它服务的目的(如果不是由于代码中的某些错误)。谢谢。

public class NodeTree {
    private Node start;
    private int degree;

    public NodeTree() {
        start = new Node();
    }

    private class Node {
        private Object root;
        private Node[] subtrees;
        private int size;

        Node() {  }      
    }
}

1 个答案:

答案 0 :(得分:1)

当您在调试器中看到this$_something_时,这意味着您的类具有对外部类的对象的引用。该引用由编译器自动创建。

在您的代码中会发生这种情况,因为Node是嵌套在NodeTree类中的非静态类。这意味着它获得对其外部对象的引用,即NodeTree自动设置。

如果您不想要此行为,请在Node中设置NodeTree静态,或将其移出以使其成为顶级课程:

public class NodeTree {
    private Node start;
    private int degree;

    public NodeTree() {
        start = new Node();
    }
    static private class Node {
//  ^^^^^^
        private Object root;
        private Node[] subtrees;
        private int size;
        Node() {  }
    }
}