No enclosing instance of type... 컴파일 오류

2014. 9. 16. 00:25Programming/Java

반응형

똑똑한 이클립스.. 컴파일 오류잡아줍니다.


No enclosing instance of type 클래스이름 is accessible. Must qualify the 
allocation with an enclosing instance of type 클래스이름 (e.g. x.new A() where 

x is an instance of 클래스이름)


접근하려는 클래스의 인스턴스가 닫혀져 있지 않다는 뜻인듯합니다.


검색해보니 static 인지 확인하라고 되어 있군요.


static 메서드 안에 비스테틱 local class를 선언해서 사용하는 경우 발생합니다.

public class A {

class B {

}


public static String getString(){

B b = new B();                      //여기서 컴파일 에러가 발생합니다.

}

}


non-static 클래스는 포함하고있는 상위 클래스를 인스턴스로 생성한다음 그 인스턴스를 통해서 생성할수 있는데 , 해당 메서드에서는 포함하고 있는 A클래스의 인스턴스를 생성하지 않고  B클래스만 생성하려고 하기 때문입니다.

public class A {

static class B {

}


public static String getString(){

B b = new B();                      //이제는 별말 안합니다.

}

}


차라리 public class로 따로 만들어도 됩니다.

//A.java

public class A {

public static String getString(){

B b = new B();                      //이래도 별말 안합니다..

}

}

-----------------------------
//B.java

public class B {


}


그냥 로컬에서만 빼도 됩니다.

//A.java

public class A {

public static String getString(){

B b = new B();                      //이래도 별말 안합니다..

}

}


class B {


}


그리고 둘다 static 을 지워도 됩니다.

public class A {

class B {

}


public String getString(){

B b = new B();                      //이경우도 별말 안합니다.

}

}

출처 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=0NhTQ&articleno=251

 

반응형

'Programming > Java' 카테고리의 다른 글

[Java8] Stream  (0) 2018.09.26
자바 요약 ( Java summary )  (0) 2017.07.23
Java로 RaspberryPi I2C 사용하기  (0) 2014.08.11
Java로 RaspberryPi GPIO 제어하기!(CODE section)  (0) 2014.07.20
TCP<Client side>  (0) 2014.06.29