【发布时间】:2010-04-29 21:58:47
【问题描述】:
所以,问题或多或少就像我写的那样。 我知道这可能根本不清楚,所以我举个例子。
我有Tree类,里面有Node类,Tree的空构造函数写成:
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();
}
所以,我不知道第一段代码有什么问题。
【问题讨论】:
标签: java constructor