通过this引用成员方法
this代表当前对象 如果需要引用的方法就是当前类中的成员方法 那么可以使用this::成员方法 的格式来使用方法引用
函数式接口:
public interface Richanle {void buy(); }
测试类:
public class Husband {//重写父类的成员方法public void buyHouse() {System.out.println("在北京四环內买一套房");}//定义一个方法,参数传递接口public void men(Richanle r){r.buy();}public void show(){/*调用本类的方法*/men(()->{this.buyHouse();});/*使用Lambda表达式优化代码*/men(this::buyHouse);}public static void main(String[] args) {new Husband().show();} }
类的构造器引用
由于构造器的名称与类名完全一样 并不固定 所以构造器引用使用类名称::new的格式表示
函数接口:
public interface PersonBuilbr {Person buile(String name); }
测试类:
/*类的构造器(构造方法)引用*/ public class Demo {//定义一个方法 参数传递姓名和PersonBuilder接口 方法中通过姓名创建Person对象public static void printName(String name,PersonBuilbr builbr){Person buile = builbr.buile(name);System.out.println(buile.getName());}public static void main(String[] args) {//调用printName方法 方法的参数PersonBuilder接口是一个函数式接口 可以传递LambdaprintName("迪丽热巴", (String name)->{return new Person(name);});/*使用方法引用优化Lambda表达式构造方法new Person(String nane)已知创建对象已知 new就可以使用Person引用new创建对象*/printName("古力娜扎",Person::new);//通过Person类的带参构造方法,通过传递的姓名创建对象 } }
运行结果: