[Java] 함수형 인터페이스의 추상 메서드는 한개뿐이어야 하는데..? (Feat. Comparator)

김태훈·2024년 4월 6일
0
post-thumbnail

FunctionalInterface는 반드시 추상메서드를 한개만 가지고 있어야 한다.
그래야 람다식으로 표현할 때, 1대1로 메서드가 연결될 수 있기 때문이다.

하지만, Sorting하는 Comparator 함수형 인터페이스는 추상 메서드가 두개이다.

  1. compare
  2. equals

두가지 이고, 나머지는 다 default로, 인터페이스 자체적으로 메서드를 구현했다.

이 때, equals 메서드는 엄연히, 추상메서드이지 않나?
우리가 사용하는 람다식은 모두 compare 메서드이고, 이 equals 메서드는 엄연히 추상메서드인데 왜 문제가 일어나지 않을까 궁금했다.

이유는 아래의 공식 문서에서 찾을 수 있었다.
https://docs.oracle.com/javase/8/docs/api/index.html?java/lang/FunctionalInterface.html

If an interface declares an abstract method overriding one of the public methods of java.lang.Object, that also does not count toward the interface's abstract method count since any implementation of the interface will have an implementation from java.lang.Object or elsewhere.

즉, equals 메서드는 Object에서 구현된 것이니, Functional Interface의 추상 메서드의 개수의 카운팅에 포함하지 않는다는 내용이었다.

profile
기록하고, 공유합시다

0개의 댓글