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