[Java] Optional 클래스의 filter()메서드

최대 1 분 소요

public Optional<T> filter(Predicate<? super T> predicate) {
    Objects.requireNonNull(predicate);
    
    if (!isPresent()) {
        return this;
    } else {
        return predicate.test(value) ? this : empty();
    }
} 
public static<T> Optional<T> empty() {
    @SuppressWarnings("unchecked")
    Optional<T> t = (Optional<T>) EMPTY;
    return t;
}
private static final Optional<?> EMPTY = new Optional<>();
private Optional() {
    this.value = null;
}     

함수형 인터페이스인 Predicatetest()를 구현한 익명 클래스 객체를 람다식으로 하여 매개변수로 넘겨주게 된다. 참인 경우 그대로 Optional객체를 반환하고 거짓인 경우 값으로 null을 가지고 있는 빈 Opional객체를 넘겨주게 된다.

댓글남기기