이펙티브자바 아이템21
-
아이템21. 인터페이스는 구현하는 쪽을 생각해 설계하라책/이펙티브자바 2021. 8. 24. 11:50
인터페이스에 새로운 메서드를 추가하는 방법 자바 8 이전 기존 구현체를 깨뜨리지 않고는 인터페이스에 메서드 추가할 방법이 없다. 자바 8 이후 디폴트 메서드가 추가되어 기존 인터페이스에 메서드 추가할 방법이 생겼다. 하지만 생각할 수 있는 모든 상황에서 불변식을 해치지 않는 디폴트 메서드를 작성하기란 어렵다. 디폴트 메서드의 문제점 디폴트 메서드는 (컴파일에 성공하더라도) 기존 구현체에 런타임 오류를 일으킬 수 있다. 디폴트 메서드는 인터페이스로부터 메서드를 제거하거나 기존 메서드의 시그니처를 수정하는 용도로 사용한다면 반드시 기존 클라이언트를 망가뜨리게 된다. 결론 기존 인터페이스에 디폴트 메서드로 새 메서드를 추가하는 일은 꼭 필요한 경우가 아니면 피해야 한다. 디폴트 메서드라는 도구가 생겼더라도 인..