方法引用是结合lambda表达式的一种语法特性
@Data @NoArgsConstructor @AllArgsConstructor class Person { private String name; private String gender; private int age; public static int compareByAge(Person p1, Person p2) { return p1.age - p2.age; } } class PersonUtil { public int compareByName(Person p1, Person p2) { return p1.getName().hashCode() - p2.getName().hashCode(); } } interface IPerson { //抽象方法,通过指定类型的构造方法初始化对象数据 Person initPerson(String name, String gender, int age); }
1.静态方法引用
类型名称.方法名称() -> 类型名称::方法名称
Collections.sort(personList, Person::compareByAge); System.out.println(personList);
2.实例方法引用
创建类型对应的一个对象 -> 对象应用::实例方法名称
PersonUtil personUtil = new PersonUtil(); Collections.sort(personList, personUtil::compareByName); System.out.println(personList);
3.构造方法引用
绑定函数式接口
IPerson person = Person::new; person.initPerson("jerry", "女", 11); System.out.println(person.toString());
原文:https://www.cnblogs.com/freeht/p/13041499.html