자바의 클래스를 선언할 때 extends 키워드로 다른 클래스를 상속하지 않으면 암시적으로 java.lang.Object 클래스를 상속하게 된다.
따라서 자바의 모든 클래스는 Object 클래스의 자식이거나 자손 클래스가 된다.
즉, Object는 자바의 최상위 부모 클래스에 해당된다.
Object는 클래스는 필드가 없고 메소드로만 구성되어 있다.
@FunctionalInterface
public interface Comparator<T> {
int compare(T o1, T o2);
boolean equals(Object obj);
// 디폴트 메서드...
// 정적 메서드...
}
정답은 1개다. 왜냐고?
인터페이스는 암시적으로 Object의 기본 메서드들을 선언하기 때문에 Obejct에 포함된 메서드의 시그니처를 명시적으로 인터페이스에 선언하더라도 추상 메서드로 카운팅 하지 않는다.
그래서 Comparator는 추상 메서드가 1개인 함수형 인터페이스다.
그래서 List<T> list
를 sort할 때, 함수형 인터페이스인 Comparator를 이용한다.