方法引用_类的构造器(构造方法)引用

package com.chunzhi.Test09ConstrutorMethodReference;
/*
    类的构造器(构造方法)引用
 */
public class Test {
    // 定义一个方法,参数传递姓名和PersonBuilder接口,方法中通过姓名创建Person对象
    public static void printName(String name, PersonBuilder pb) {
        Person person = pb.builderPerson(name);
        System.out.println(person.getName());
    }

    public static void main(String[] args) {
        // 调用printName方法,方法的参数PersonBuilder接口是一个函数式接口,可以传递Lambda
        printName("迪丽热巴", (String name) -> {
            return new Person(name);
        });

        /*
            使用方法引用优化Lambda表达式
            构造方法new Person(String name) 已知
            创建对象已知 new
            就可以使用Person引用new创建对象
         */
        printName("古力娜扎", Person::new); // 使用Person类的带参构造方法,通过传递的姓名创建对象
    }
}
package com.chunzhi.Test09ConstrutorMethodReference;

public class Person {
    private String name;

    public Person() {
    }

    public Person(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
package com.chunzhi.Test09ConstrutorMethodReference;
// 定义一个创建Person对象的函数式接口
@FunctionalInterface
public interface PersonBuilder {
    // 定义一个方法,根据传递的姓名,创建Person对象返回
    public abstract Person builderPerson(String name);
}

 

posted @ 2020-12-05 15:38  春志  阅读(166)  评论(0编辑  收藏  举报