더북(TheBook)

실전에서는 보통 람다 표현식이나 메서드 레퍼런스를 전달하기 때문에 메서드의 이름은 실제로 문제가 되지 않는다. 여기서 중요한 부분은 boolean이라는 리턴 타입이다. Stream.filter 문서를 읽을 때 Predicateboolean을 리턴하는 함수라는 점만 기억하면 된다.

 

<Note>

Stream.filter의 선언부를 자세히 살펴보면 와일드카드 타입 Predicate<? super T>를 주목하게 될 것이다. 흔히 함수 파라미터로 이와 같은 타입을 사용한다. 예를 들어, EmployeePerson의 서브클래스고, Stream<Employee>가 있다고 하자. 이 경우 Predicate<Employee>, Predicate<Person> 또는 Predicate<Object>로 스트림을 필터링할 수 있다(여기서 TEmployee). 이와 같은 유연성은 메서드 레퍼런스를 전달할 때 특히 중요하다. 예를 들어, Stream<Employee>를 필터링하는 데 Person::isAlive를 사용하려 한다고 하자. 이 작업은 순전히 filter 메서드의 파라미터에 있는 와일드카드 덕분에 동작한다.

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