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 |