2014. 9. 16. 00:25ㆍProgramming/Java
똑똑한 이클립스.. 컴파일 오류잡아줍니다.
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(); //이래도 별말 안합니다..
}
}
public class B {
}
그냥 로컬에서만 빼도 됩니다.
//A.java
public class A {
public static String getString(){
B b = new 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 |