스터디/이펙티브 자바

[Effective Java] Item21. 인터페이스는 구현하는 쪽을 생각해 설계

📝 작성 : 2022.06.04  ⏱ 수정 : 
728x90

인터페이스에 메서드를 추가

자바 8이후 디폴트 메서드를 통해 기존 인터페이스에 메서드를 추가할 수 있게 되었습니다. 하지만 아래와 같은 이유로 디폴트 메서드의 추가는 신중해야합니다.

  1. 디폴트 메서드를 재정의하지 않은 모든 클래스에서 디폴트 구현이 쓰이게 됩니다.
  2. 생각할 수 있는 모든 상황에서 불변식을 해치지 않는 디폴트 메서드를 작성하기란 매우 어렵습니다.
  3. 디폴트 메서드는 기존 구현체에 런타임 오류를 일으킬 수 있습니다.

정리

  1. 디폴트 메서드는 인터페이스로붙터 메서드를 제거하거나 기존 메서드의 시그니처를 수정하는 용도가 아닙니다.
  2. 인터페이스를 설계할 때 세심한 주의를 기울여야 합니다.
반응형