이 클래스에는 내부 클래스가 있습니다.
public class A {
public class NameComparator implements Comparator<A> {
@Override
public int compare(A o1, A o2) {
return o1.name.compareToIgnoreCase(o2.name);
}
}
...
}
그리고 다른 클래스 C (A가 아닌 다른 패키지에 있음)에서이 NameComparator 클래스에 액세스하고 싶습니다.
예 (C에서) :
Collections.sort (aArrayList, A.new NameComparator ());
이것은 작동하지 않습니다. 클래스 A 내에 포함되지 않도록 내부 클래스 NameComparator를 이동하고 ANameComparator와 같은 이름으로 이름을 변경해야합니까? 그것들은 너무 밀접하게 관련되어 있기 때문에이 기능을 클래스 A에 넣지 않는 것이 어색합니다.
이와 같은 코드를 사용하려면 내부 클래스가 정적이어야합니다.
public class A {
public static class NameComparator implements Comparator<A> {
@Override
public int compare(A o1, A o2) {
return o1.name.compareToIgnoreCase(o2.name);
}
}
...
}
왜? 내부 클래스를 정적으로 표시하지 않으면 외부 클래스의 인스턴스에서만 유효하기 때문입니다.
zour 사용 사례에서 사용하려면 다음과 같이 비교기를 인스턴스화해야합니다.
Collections.sort(aArrayList,new A.NameComparator());
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다