디폴트메서드

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

    디폴트 메서드의 등장 자바 8에서 디폴트 메서드의 등장으로 기존 인터페이스에 메서드를 추가할 수 있게 되었다. 하지만 생각할 수 있는 모든 상황에서 불변식을 해치지 않는 디폴트 메서드를 작성하기란 쉽지 않다. 예를 들어 Collection 인터페이스에 추가된 removeIf 메서드가 있다. 이 메서드는 if문의 조건이 true를 리턴하면 element를 제거하는 로직을 가지고 있다. 이 디폴트 메서드는 apache.commons.collections4.collection.SynchronizedCollection의 역할을 제대로 못하게 만든다. => 아파치 패키지는 객체에 락을 거는 기능을 추가적으로 제공하는데 Collection의 디폴트 메서드 추가로 이러한 약속이 쉽게 깨질 수 있게 되었다. 이런 문제..