더북(TheBook)

Note ≣

자바에서 Object 타입은 모든 클래스의 슈퍼타입이지만, 람다 표현식은 Object 타입 변수에 저장할 수 없다(4장 상속과 리플렉션 참고). Object는 함수형 인터페이스가 아니라 클래스이기 때문이다.


자바 API에는 수많은 함수형 인터페이스가 있다(3.6.2 함수형 인터페이스 선택 참고). 그중 하나가 Predicate 인터페이스다.

public interface Predicate<T> {

    boolean test(T t);

    // 이외의 default 메서드와 static 메서드

}


ArrayList 클래스에는 매개변수로 Predicate를 받는 removeIf 메서드가 있다. Predicate는 람다 표현식을 전달받을 용도로 특별히 설계했다. 예를 들어 다음 문장은 배열 리스트에서 null 값을 모두 제거한다.

list.removeIf(e -> e = = null);

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