Why does a sub-class class of a class have to be static in order to initialize the sub-class in the

Posted by Alex on Stack Overflow See other posts from Stack Overflow or by Alex
Published on 2010-04-29T21:58:47Z Indexed on 2010/04/29 22:07 UTC
Read the original article Hit count: 286

Filed under:
|

So, the question is more or less as I wrote. I understand that it's probably not clear at all so I'll give an example.

I have class Tree and in it there is the class Node, and the empty constructor of Tree is written:

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 gives me the error: "No enclosing instance of type RBTree is available due to some intermediate constructor invocation" for the "new RBTree()" in the empty constructor. However, if I change the RBNode to be a static class, there is no problem.

So why is it working when the class is static.

BTW, I found an easy solution for the cunstructor:

public RBTree(){
    this.head = new RBNode();
}

So, I have no idea what is the problem in the first piece of code.

© Stack Overflow or respective owner

Related posts about java

Related posts about constructor