'No enclosing instance of type'에 해당되는 글 1건

  1. 2013.12.19 No enclosing instance of type 컴파일 오류
posted by 셀로브 2013. 12. 19. 21:56


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