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

package com.chunzhi.Test08ThisMethodReference;
/*
    通过this引用本类的成员方法
 */
public class Husband {
    // 定义一个买房子的方法
    public void buyHouse() {
        System.out.println("北京二环内买一套四合院!");
    }
    // 定义一个结婚的方法,参数传递Richable函数式接口
    public void marry(Richable c) {
        c.buy();
    }
    // 定义一个非常高兴的方法
    public void soHappy() {
        // Lambda表达式的写法
        // 调用结婚的方法,方法的参数Richable是一个函数式接口,传递Lambda表达式
        marry(() -> {
            // 使用this.成员方法,调用本类买房子的方法
            this.buyHouse();
        });
        
        // 引用的写法
        /*
            使用方法引用优化Lambda表达式
            this是已经存在的
            本类的成员方法不用buyHouse也是已经存在的
            所以我们可以是直接使用this引用本类的成员方法buyHouse
         */
        marry(this :: buyHouse);
    }

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

}

Richable函数式接口:

package com.chunzhi.Test08ThisMethodReference;
// 定义一个富有的函数式接口
@FunctionalInterface
public interface Richable {
    public abstract void buy();
}

 

posted @ 2020-12-05 14:50  春志  阅读(350)  评论(0编辑  收藏  举报