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