为什么类的子类类必须是静态的,才能在类的构造函数中初始化子类?
2022-09-04 08:11:22
所以,这个问题或多或少就像我写的。我知道它可能根本不清楚,所以我会举个例子。
我有类树,其中有类Node,并编写了树的空构造函数:
public class RBTree {
private RBNode head;
public RBTree(RBNode head,RBTree leftT,RBTree rightT){
this.head=head;
this.head.leftT.head.father = head;
this.head.rightT.head.father = head;
}
public RBTree(RBNode head){
this(head,new RBTree(),new RBTree());
}
public RBTree(){
this(new RBNode(),null,null);
}
public class RBNode{
private int value;
private boolean isBlack;
private RBNode father;
private RBTree leftT;
private RBTree rightT;
}
}
Eclipse给了我一个错误:“由于一些中间构造函数调用”,没有RBTree类型的封闭实例可用“,用于空构造函数中的”new RBTree()”。但是,如果我将RBNode更改为静态类,则没有问题。
那么为什么当类是静态的时,它是如何工作的。
顺便说一句,我为cunstructor找到了一个简单的解决方案:
public RBTree(){
this.head = new RBNode();
}
所以,我不知道第一段代码中的问题是什么。