前言:
今天咱们对“java的构造函数有返回值吗对吗”都比较关注,咱们都想要学习一些“java的构造函数有返回值吗对吗”的相关内容。那么小编也在网络上搜集了一些关于“java的构造函数有返回值吗对吗””的相关知识,希望我们能喜欢,姐妹们一起来学习一下吧!上一篇文章对最常见的方法引用类型做了介绍,这一章继续说一下方法引用中的另一种:构造方法引用。
顾名思义,这是对构造方法的引用,肯定跟构造方法是有关的。屁话不多说,步入正题,上代码。
首先定义一个实体类User:
/** * User 实体类 * @author orange * @create 2022-01-03 11:58 */@Datapublic class User { private String name; private Integer age; public User() { System.out.println("====无参构造被执行了======"); } public User(String name, Integer age) { this.name = name; this.age = age; System.out.println("====有参构造被执行了======"); }}无参构造方法引用,使用函数式接口java.util.function.Supplier进行举例:
/** * java.util.function.Supplier<T> * 函数式接口, * get方法不接收参数,返回一个T类型的对象 */Supplier<User> supplier1 = new Supplier<User>() { @Override public User get() { return new User(); }};System.out.println("/匿名内部类/supplier1.get()////" + supplier1.get());Supplier<User> supplier2 = User::new;System.out.println("/构造方法引用/supplier2.get()////" + supplier2.get());
结果打印:
====无参构造被执行了======/匿名内部类/supplier1.get()////User(name=null, age=null)====无参构造被执行了======/构造方法引用/supplier2.get()////User(name=null, age=null)有参构造方法引用,使用函数式接口java.util.function.BiFunction进行举例:
/** * java.util.function.BiFunction<T, U, R> * 函数式接口 * apply方法接收2个参数 * 第一个参数为T类型,第二个参数为U类型; * 返回一个R类型的对象 */BiFunction<String, Integer, User> biFunction1 = new BiFunction<String, Integer, User>() { @Override public User apply(String s, Integer integer) { return new User(s, integer); }};System.out.println("==匿名内部类==biFunction1.apply====" + biFunction1.apply("zhangsan", 23));BiFunction<String, Integer, User> biFunction2 = User::new;System.out.println("==构造方法引用==biFunction2.apply====" + biFunction2.apply("lisi", 24));
结果打印:
====有参构造被执行了========匿名内部类==biFunction1.apply====User(name=zhangsan, age=23)====有参构造被执行了========构造方法引用==biFunction2.apply====User(name=lisi, age=24)
上述代码使用了2个函数式接口对构造方法引用进行了示范,先使用了大家最容易理解的匿名内部类,然后又使用构造方法引用对其进行简化;但两者其实本质完全相同。
构造方法引用格式:
类名 :: new使用要求:
1.首先需要可以使用lambda表达式表达;
2.其次lambda的方法体写的方法已经存在,且是某个类的构造方法(有参无参均可);
3.此外还要满足实现函数式接口的方法参数、返回值类型必须和某个类的有参构造方法或无参构造方法参数、返回值要一致;
如:
上述Supplier接口里面get()的入参是空,出参是User类型,和User的无参构造方法出入参相同,方法体里面也是User类的无参构造方法,符合条件;
BiFunction的apply方法出入参和User类的有参构造出入参一致,方法体里面也是User类的有参构造方法,符合条件。
好啦,java8 新特性之方法引用--构造方法引用先讲到这里。有疑问可以评论区讨论,作者看到都会回复哒![害羞]求关注收藏转发评论![送心][呲牙][呲牙][呲牙]
标签: #java的构造函数有返回值吗对吗