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 +
                '}';
    }
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM