我正在尝试使用嵌套节点来实现一棵树,它本身有一个Node数组。(请参阅下面的代码)当我实例化并调试它时,我可以在start 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() { }
}
}发布于 2014-05-02 18:48:21
当您在调试器中看到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() { }
}
}https://stackoverflow.com/questions/23434885
复制相似问题