03-Java8新特性 方法引用与构造器引用
方法引用
若 Lambda 体中的内容有方法已经实现了,我们可以使用方法引用
(可以理解为方法引用是 Lambda 表达式的另一种表现形式)
主要三种语法格式
对象::实例方法名
注意:需要函数式接口方法的入参和返回值 == 引用的对象方法的入参和返回值
@Test public void test1(){ Consumer consumer1 = s -> System.out.println(s); // 优化 对象::实例方法名 // 1:这个是多写了一行,防止直接看不懂,下面才是简化的 PrintStream out = System.out; Consumer consumer2 =out::println; // 简化 Consumer consumer3 = System.out::println; consumer1.accept("hello world"); consumer2.accept("hello world"); consumer3.accept("hello world"); }
新建类
package com.dance.java8.entity; import lombok.Data; @Data public class Person { private String name; private Integer age; }
@Test public void test3(){ Person person = new Person(); person.setName("flower"); Supplier supplier = person::getName; System.out.println(supplier.get()); }
类::静态方法名
注意:需要函数式接口方法的入参和返回值 == 引用的对象方法的入参和返回值
@Test public void test2(){ Comparator comparator = Integer::compare; }
类::实例方法名
注意:需要两个参数,左边参数作为调用者,右边参数作为入参,才可以使用类::实例方法名
@Test public void test4(){ BiPredicate<String,String> biPredicate1 = (x,y) -> x.equals(y); // 优化 类::实例方法名 BiPredicate<String,String> biPredicate2 = String::equals; }
构造器引用
注意:需要调用的构造器的参数列表与函数式接口中的抽象方法列表保持一致
@Test public void test5(){ Supplier supplier1 = () -> new Person(); // 构造器引用优化 Supplier supplier2 = Person::new; }
若有收获,就点个赞吧
作者:彼岸舞
时间:2021\12\13
内容关于:Java
本文属于作者原创,未经允许,禁止转发
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 上周热点回顾(3.3-3.9)
· AI 智能体引爆开源社区「GitHub 热点速览」