기타/에러처리

[JAVA] No enclosing instance of type Class is accessible.

호두밥 2021. 9. 21. 16:12

에러 메시지

No enclosing instance of type Class is accessible. Must qualify the allocation with an enclosing instance of type Class (e.g. x.new A() where x is an instance of Class).

 

원인

static void main 메소드에서  최상위 클래스 선언 없이 내부 public 클래스 생성자를 호출했을 때 발생함. 

 

public class Sample {
	public static void main(String[] args) {
        A sampleA = new A();
    }

    class A {
        int a;
        A(){
            this.a = 0;
        }
        A(int a){
            this.a = a;
        }

        public int getA(){
            return a;
        }
        public void setA(int a){
            this.a = a;
        }
    }    
}

 

해결

① 클래스 선언문을 추가해준다.

       Sample s = new Sample();        

② new 앞에 클래스 선언 변수를 추가해준다. 

      A sampleA = s.new A();

 

   

public class Sample {
	public static void main(String[] args) {
        Sample s = new Sample();
        A sampleA = s.new A();
    }

    class A {
        int a;
        A(){
            this.a = 0;
        }
        A(int a){
            this.a = a;
        }

        public int getA(){
            return a;
        }
        public void setA(int a){
            this.a = a;
        }
    }    
}