1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | 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 인지 확인하라고 되어 있군요. 참고 : http://www.ezslookingaround.com/blog/tech/?no=1265 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(); //이경우도 별말 안합니다. } } |
'언어(Language) > JAVA' 카테고리의 다른 글
Java 한글 <-> 유니코드 변환 (0) | 2013.12.19 |
---|---|
Text File Read Write (0) | 2013.12.18 |
IS-A 관계와 HAS-A 관계 (0) | 2013.10.20 |
캡슐화 (0) | 2013.10.20 |
다형성 (0) | 2013.10.20 |