lambda - 方法引用
方法引用是一种更为简洁的代码构造,它可以让你直接引用已有Java类的方法或者构造器,你可以通过使用::关键字来引用一个方法。
方法引用可以分为以下三种:
- 静态方法引用
- 实例方法引用
- 构造函数引用
下面是一些示例代码:
// 静态方法引用
Function<String, Integer> function = Integer::parseInt;
Integer result = function.apply("123");
System.out.println(result); // 输出:123
// 实例方法引用
String test = "Hello, World!";
Supplier<Integer> supplier = test::length;
int length = supplier.get();
System.out.println(length); // 输出:13
// 构造函数引用
Supplier<Test> supplier = Test::new;
Test test = supplier.get();
日常应用
package com.sea.bean;
@FunctionalInterface
interface ClickListenner<T> {
void onclick(T a);
}
class Receiver {
public void doclick(String msg) {
System.out.println(msg);
}
}
class Provider {
private ClickListenner<String> listenner;
public Provider(ClickListenner<String> listenner) {
this.listenner = listenner;
}
public void sendMessage() {
listenner.onclick("click...");
}
}
public class TestA {
public static void main(String[] args) {
{
//原始写法
Receiver receiver = new Receiver();
Provider provider = new Provider(new ClickListenner<String>() {
@Override
public void onclick(String msg) {
receiver.doclick(msg);
}
});
provider.sendMessage();
}
{
// Lambda下的简写
Receiver receiver = new Receiver();
Provider provider = new Provider((msg) -> {
receiver.doclick(msg);
});
provider.sendMessage();
}
{
// Lambda下的极简写法
Receiver receiver = new Receiver();
Provider provider = new Provider(receiver::doclick);
provider.sendMessage();
}
}
}
疯狂的妞妞 :每一天,做什么都好,不要什么都不做!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY