方法引用-通过this引用本类的成员方法和类的构造器(构造方法)引用

方法引用-通过this引用本类的成员方法

Richable接口
@FunctionalInterface
public interface Richable {
    //定义一个想买什么就买什么的方法
    void buy();


}

 


Husband类
复制代码
/*
通过this引用本类的成员方法
 */
public class Husband {
    //定义一个买房子的方法
    public void buyHouse(){
        System.out.println("火星养奥特曼");
    }
    //定义一个结婚的方法,参数传递Richable接口
    public void marry(Richable r){
        r.buy();
    }
    //定义一个非常高兴的方法
    public void soHappy() {
        //调用结婚的方法,方法的参数Richable是一个函数式接口,传递Lambda表达式
        marry(()->{
            //使用this.成员方法,调用本类买房子的方法
            this.buyHouse();
        });
        /*
            使用方法引用优化Lambda表达式
            this是已经存在的
            本类的成员方法buyHouse也是已经存在的
            所以我们可以直接使用this引用本类的成员方法buyHouse
         */
        marry(this::buyHouse);
    }

    public static void main(String[] args) {
        new Husband().soHappy();
    }
复制代码

 

方法引用-类的构造器(构造方法)引用
Person类
复制代码
public class Person {
    private String name;

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

    public Person() {
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                '}';
    }
}
复制代码

 


PersonbBuiwlder接口
复制代码
/*
定义一个创建Person对象的函数式接口
 */
@FunctionalInterface
public interface PersonbBuiwlder {
    //定义一个方法,根据传递的姓名,创建Person对象返回
    Person  p  (String name);


}
复制代码

 


Demo类
复制代码
/*
    类的构造器(构造方法)引用
 */
public class Demo {
    //定义一个方法,参数传递姓名和PersonbBuilder接口,方法中通过姓名创建person对象
    public static void printName(String name,PersonbBuiwlder qb){
        Person p = qb.p(name);
        System.out.println(p.getName());
    }

    public static void main(String[] args) {
        //调用printName方法,方法的参数PersonBuilder接口是一个函数式接口,可以传递Lambda
        printName("derder",(String name)->{
            return new Person(name);
        });
        /*使用方法引用优化Lambda表达式
        构造方法new Persib(String name)已知
        创建对象已知 new
        即可以只用Persib引用的new创建对象
         */
        printName("derderder",Person:: new);

    }
复制代码

 

 
 
 
 
 
posted @   漁夫  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示