Итак, вопрос более или менее, как я писал. Я понимаю, что это, вероятно, не совсем понятно, поэтому я приведу пример.
У меня есть дерево классов и в нем есть класс 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 доступно из-за некоторого промежуточного вызова конструктора" для "нового RBTree()" в пустом конструкторе. Однако, если я изменяю RBNode как статический класс, проблем нет.
Итак, почему он работает, когда класс статичен.
BTW, я нашел легкое решение для cunstructor:
public RBTree(){
this.head = new RBNode();
}
Итак, я понятия не имею, в чем проблема в первом фрагменте кода.