Java Error : No enclosing instance of type ... is accessible

최원준·2021년 9월 8일
0

https://velog.io/@juxn183/How-to-sort-in-Java-%EC%9E%90%EB%B0%94-%EC%A0%95%EB%A0%AC%EB%B0%A9%EB%B2%95-Collections.sort


예제를 작성할 때 생겼던 오류였다.

static 함수에서, 참조하려는 클래스가 닫혀있을 때 접근하지 못하는 에러이다.

내부에 있는 클래스를 static 함수가 참조할 때 에러가 난다.

위에서 작성한 Collections 클래스의 sort는 static 함수이다.

해결방법
1. nameLengthCompare 클래스를 선언 할 때 static을 붙여 생성해 놓았어야 했다.
2. 아니면 포함관계를 벗어나 클래스를 아예 바깥으로 빼버리면 문제가 없다.

소스 보기
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
public class sortTest02 {
        
    public static void main(String[] args) {
        
        List<Person> nameList = new ArrayList<>();
        
        nameList.add(new Person("Park"30));
        nameList.add(new Person("Choi"26));
        nameList.add(new Person("Kim"29));
        
        System.out.println("- 정렬 전" + nameList);
        
        Collections.sort(nameList);
        
        System.out.println("- 정렬 후" + nameList);
        
    }
}
 
class Person implements Comparable<Person>{
    
    String name;
    int age;
    
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    
    @Override
    public int compareTo(Person p) {
        
        if(this.age>p.age) {
            return 1;
        }else if(this.age<p.age) {
            return -1;
        }else {
            return 0;
        }
    }
    
    @Override
    public String toString() {
        return "Person[name="+ name + ", age=" + age +"]";
    }
}
 
cs
profile
Lv.01 개발자

0개의 댓글