方法引用_通过this引用本类的成员方法和方法引用_类的构造器(构造方法)引用
方法引用_通过this引用本类的成员方法
this代表当前对象,如果需要引用的方法就是当前类中的成员方法,那么可以使用“this : : 成员方法”的格式来使用方法引用
/* 定义一个富有的函数式接口 */ @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(); } }
方法引用_类的构造器(构造方法)引用
构造器的名称与类名完全一样,并不固定。所以构造器引用使用 类名称 : : new的格式表示。
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; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + '}'; } }
/* 定义一个创建Person对象的函数式接口 */ @FunctionalInterface public interface PersonBuilder { //定义一个方法,根据传递的姓名,创建Person对象返回 Person builderPerson(String name); }
/* 类的构造器(构造方法)引用 */ public class PersonBuilderTest { public static void main(String[] args) { //调用printName方法,方法的参数PersonBuilder接口是一个函数式接口,可以传递Lambda printName("张三",(String name)->{ return new Person(name); }); /* 使用方法引用优化Lambda表达式 构造方法new Person(String name)已知 创建对象已知 new 就可以使用Person引用new创建对象 */ //使用Person类的带参构造方法, printName("张三",Person::new); } //定义一个方法,参数传递姓名和PersonBuilder接口,方法中通过姓名创建Person对象 public static void printName(String name,PersonBuilder pb){ Person person = pb.builderPerson(name); System.out.println(person.getName()); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix