less than 1 minute read

item21 인터페이스는 구현하는 쪽을 생각해 설계하라

인터페이스의 디폴트 메서드

  • 자바 8 이후로, 기존 인터페이스에도 메서드를 추가할 수 있도록 디폴트 메서드 기능을 추가하였다.
  • 하지만 이와 같이 디폴트 메서드를 선언한다면, 디폴트 메서드를 재정의하지 않은 모든 클래스에서 디폴트 구현이 쓰이게 된다. 다시 말해, 인터페이스의 구현 클래스에도 디폴트 메서드로 인한 영향이 미치게 되는 것이다.
  • 컴파일에 성공하더라도 기존 구현체에 런타임 오류를 일으킬 수 있다.
  • 이렇듯 모든 상황을 고려하는 디폴트 메서드를 작성하는 것은 쉽지 않기 때문에, 기존 인터페이스에 디폴트 메서드로 새 매서드를 추가하는 것을 지양해야 한다.
  • 반면 새로운 인터페이스를 만들어낼 때에는 표준 메서드 구현에 아주 유용한 수단이며, 인터페이스를 더 쉽게 구현해 활용할 수 있게 해준다.
  • 새로운 인터페이스를 릴리즈하기 전에는 반드시 테스트를 거치는 것을 권장한다.

Leave a comment