/**
* 定义一个富有的函数式接口
*/
@FunctionalInterface
public interface Richable {
//定义一个想买什么就买什么的的方法
void buy();
}
/**
* 通过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();
}
}