我尝试使用嵌套节点实现树,节点本身有一个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() { }
}
}
答案 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() { }
}
}