2012-10-19 2 views
0

개체를 만드는 동안 메서드를 선언 할 수 있습니까?개체를 만들고 동시에 메서드를 정의하는 방법

public static void main(String[] args) { 
     Comparator<String> comparator = new Comparator<String>() { 
      public int compare (String s1, String s2) { 
       return s1.compareToIgnoreCase(s2); 
      } 
     }; 
} 

를 그리고 객체 comparator를 만드는 동안, 코드가 Comparator<T> 인터페이스를 구현하는 방법을 추가하는 것을 것 같습니다 : 나는 자바 코드의 다음 줄을 가로 질러 달렸다. 인스턴스를 만들 때 항상 추가 메서드를 추가 할 수 있습니까? 아니면 특히 Java 인터페이스와 관련된 것입니까?

도움 주셔서 감사합니다.

답변

1

이것은 생각하는 바가 아닙니다.

뒤에 오는 것 new Comparator<String>()는 익명의 내부 클래스입니다. 익명의 클래스가 Comparator 클래스의 구현자인 것을 의미합니다.

1. AnyClass object = new AnyClass() { // anonymous inner class starts here. 
// In this case , inner class is a sub class of AnyClass. 
};// ends here 
2. AnyInterface anyInterface = new AnyInterface() { //anonymous inner class starts here. 
// In this case , inner class is implementer of AnyInterface. 
}; // ends here. 
+0

좋은 explaination :

는 두 oprions을 가질 수 있습니다. 매우 명확한! – Drogba

+0

이 그렇게 명확합니다. 감사! – nemesis

1

네, 그렇게 할 수 있습니다. Anonymous Class이라고합니다. 즉, 메서드 내에서 새 클래스를 만들고 있지만 이름을 지정하지 않은 것입니다 (익명 임). 귀하의 예제에서이 익명 클래스는 Comparator<String> 인터페이스를 구현하며 본문에 compare 메서드를 정의해야합니다. 그것이 코드가 작동하는 이유입니다.

관련 문제