前言:
最近在看公司源码的时候发现了这么个Consumer接口的时候,但是蒙蔽的了一阵。百度后才知其然。然后到现在我还是不知道为啥要多次一举。。。
Consumer接口
Consumer接口是Java一系列函数式接口中的一个。上源码
@FunctionalInterface
public interface Consumer<T> {
void accept(T t);
}
accept方法:接收一个对象,然后消费该对象来执行对应的逻辑代码
例子:
Stuend类
public class Student{
String firstName;
String lastName;
Integer age;
public Student(String firstName, String lastName,Integer age) {
this.firstName = firstName;
this.lastName = lastName;
this.age=age;
}
public void printMsg(){
System.out.println(toString());
}
@Override
public String toString() {
return "Student{" +
"firstName='" + firstName + '\'' +
", lastName='" + lastName + '\'' +
", age=" + age +
'}';
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
}
Main类
public class Main {
public static void main(String[] args) {
Student student=new Student("lqhao","zpwen",18);
Consumer<Student> studentConsumer=new Consumer<Student>() {
@Override
public void accept(Student student) {
student.printMsg();; }
};
studentConsumer.accept(student);
}
}
结果:
总结:
实际的效果等于直接调用studnet.printMsg一样,多次一举的原因可能实后续会调用多个该对象的方法,可以一并写在一起,用一个accept优雅的调用吧???