java8新特性-lambda(方法引用)

方法引用是结合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