burtek burtek - 6 months ago 9
Java Question

Creating instance of inner class outside the outer class in java



I'm new to Java.

My file

A.java
looks like this:

public class A {
public class B {
int k;
public B(int a) { k=a; }
}
B sth;
public A(B b) { sth = b; }
}


In another java file I'm trying to create the A object calling

anotherMethod(new A(new A.B(5)));


but for some reason I get error:
No enclosing instance of type A is accessible. Must qualify the allocation with an enclosing instance of type A (e.g. x.new B() where x is an instance of A).


Can someone explain how can I do what I want to do? I mean, do I really nead to create instance of
A
, then set it's
sth
and then give the instance of
A
to the method, or is there another way to do this?

Answer

In your example you have an inner class that is always tied to an instance of the outer class.

If, what you want, is just a way of nesting classes for readability rather than instance association, then you want a static inner class.

public class A {
    public static class B {
        int k;
        public B(int a) { k=a; }
    }
    B sth;
    public A(B b) { sth = b; }
}

new A.B(4);
Comments