더북(TheBook)

07
디폴트 메서드

많은 프로그래밍 언어에서 함수 표현식을 컬렉션 라이브러리와 통합한다. 이는 종종 루프를 이용한 버전보다 짧고 이해하기 쉬운 코드로 이어진다. 예를 들어, 다음 루프를 고려해보자.


for (int i = 0; i < list.size(); i++)

System.out.println(list.get(i));


 

더 나은 방법이 있다. 라이브러리 설계자는 각 요소에 함수를 적용하는 forEach 메서드를 제공할 수 있다. 이 경우 다음과 같이 간단하게 호출할 수 있다.


list.forEach(System.out::println);


 

컬렉션 라이브러리를 바닥부터 설계해왔다면 문제가 없다. 하지만 자바 컬렉션 라이브러리는 수년 전부터 설계되어왔기 때문에 문제가 된다. Collection 인터페이스가 forEach 같은 새로운 메서드를 얻게 되면, Collection을 구현하는 자체 클래스를 정의하고 있는 모든 프로그램은 이 메서드를 구현하기 전에는 동작하지 않는다. 쉽게 말해 자바에서는 이 상황을 받아들일 수 없다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.