Java 8 : Predicate和Consumer接口

1.consumer

 jdk 1.8 的 Iterable 接口中的 forEach 默认方法:

public interface Iterable<T> {
    default void forEach(Consumer<? super T> action) {
        Objects.requireNonNull(action);
        for (T t : this) {
            action.accept(t);
        }
    }
}

2.

public class PredicateConsumerDemo {

    public static void main(String[] args) {

        Student stu = new Student(90);
        stu = updateStudentFee(stu,
                student -> student.grade > 80,
                student -> student.discount = 0.2);
        System.out.println(stu);

    }

    public static Student updateStudentFee(Student student, Predicate<Student> predicate, Consumer<Student> consumer){
        if ( predicate.test(student)){
            consumer.accept(student);
        }
        return student;
    }

}
class Student{
    Double discount = 0.0;
    Double fee = 20000.0;
    Integer grade ;

    public Student(Integer grade) {
        this.grade = grade;
    }

    @Override
    public String toString() {
        return "Student{" +
                "discount=" + discount +
                ", fee=" + fee +
                '}';
    }
}
原文地址:https://www.cnblogs.com/yuyutianxia/p/6322985.html