인터페이스에 메서드를 추가
자바 8이후 디폴트 메서드를 통해 기존 인터페이스에 메서드를 추가할 수 있게 되었습니다. 하지만 아래와 같은 이유로 디폴트 메서드의 추가는 신중해야합니다.
- 디폴트 메서드를 재정의하지 않은 모든 클래스에서 디폴트 구현이 쓰이게 됩니다.
- 생각할 수 있는 모든 상황에서 불변식을 해치지 않는 디폴트 메서드를 작성하기란 매우 어렵습니다.
- 디폴트 메서드는 기존 구현체에 런타임 오류를 일으킬 수 있습니다.
정리
- 디폴트 메서드는 인터페이스로붙터 메서드를 제거하거나 기존 메서드의 시그니처를 수정하는 용도가 아닙니다.
- 인터페이스를 설계할 때 세심한 주의를 기울여야 합니다.
반응형
'스터디 > 이펙티브 자바' 카테고리의 다른 글
[Effective Java] Item23.태그달린 클래스보다는 클래스 계층구조 활용 (0) | 2022.06.04 |
---|---|
[Effective Java] Item22. 인터페이스는 타입을 정의하는 용도로만 사용 (0) | 2022.06.04 |
[Effective Java] Item20. 추상 클래스보다는 인터페이스 (0) | 2022.06.04 |
[Effective Java] Item19. 상속을 고려해 설계하고 문서화하라 (0) | 2022.05.29 |
[Effective Java] Item18. 상속보다는 컴포지션 (0) | 2022.05.29 |