Interview Q&A Weekend Series #2 🚀 | Lambda Confused? Comparable & Comparator @Javatechie
- 함수형 인터페이스는 단 하나의 추상 메서드만 가져야 하며,
Object 클래스 메서드(예: equals, hashCode, toString)는 추상 메서드 수에 포함되지 않습니다. 📜
Comparator는 compare(O1, O2) 메서드가 두 인자를 명시적으로 받아 비교하므로 함수형 인터페이스로 정의됩니다. ✅
Comparable은 compareTo(O)라는 단 하나의 추상 메서드를 가지지만, 내부적으로 this (현재 객체)와 인자를 비교하는 방식에 의존합니다. 🤔
- 람다 표현식은
this 컨텍스트를 명확하게 가지지 않으므로, Comparable을 람다로 구현할 경우 this를 통한 비교 로직이 작동하지 않습니다. 🚫
- 자바 개발자들은
Comparable의 this 의존적인 비교 로직이 람다 표현식의 디자인 의도와 충돌하기 때문에, 의도적으로 함수형 인터페이스로 지정하지 않았습니다. 💡
- 이는 개발자들의 오용을 방지하고 람다의 설계 원칙을 유지하기 위한 중요한 결정이었습니다. 🛡️
Comparable은 객체 자체의 자연 정렬에 사용되며, Comparator는 외부에서 정의하는 사용자 정의 정렬에 활용됩니다. 🔄
데브허브 | DEVHUB | Interview Q&A Weekend Series #2 🚀 | Lambda Confused? Comparable & Comparator @Javatechie