最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
Java中 接口怎么配合 Lambda 表达式简化匿名内部类实现
时间:2026-07-14 09:35:45 编辑:袖梨 来源:一聚教程网
Java中接口配合Lambda表达式简化匿名内部类的前提是该接口必须为函数式接口,即仅含一个抽象方法;Lambda本质是该抽象方法的简洁实现,可替代冗长的匿名内部类写法,如Runnable、Comparator等均属此类。
Java 中接口配合 Lambda 表达式简化匿名内部类,核心前提是该接口必须是函数式接口——即只定义了一个抽象方法(允许有默认方法或静态方法)。Lambda 表达式本质就是这个抽象方法的简洁实现,替代了冗长的匿名内部类写法。
函数式接口是前提
只有被 @FunctionalInterface 标注(或实际满足条件)的接口才能用 Lambda。例如:
-
Runnable:只有run() -
Comparator<T>:只有compare(T, T) -
Function<T,R>:只有apply(T)
如果你自定义接口,确保它只有一个抽象方法,否则编译报错。
Lambda 替代匿名内部类的写法对比
以启动线程为例:
立即学习“Java免费学习笔记(深入)”;
传统匿名内部类:
new Thread(new Runnable() {public void run() {
System.out.println("Hello");
}
}).start();
等价的 Lambda 写法:
new Thread(() -> System.out.println("Hello")).start();关键变化:
- 省去
new Runnable()和public void run()声明 - 参数列表、箭头
->、方法体直接对应抽象方法的签名 - 当方法体只有一条语句,可省略花括号和
return(若需返回值)
带参数和返回值的 Lambda 示例
比如使用 Comparator 排序:
public int compare(String s1, String s2) {
return s1.length() - s2.length();
}
});
换成 Lambda:
list.sort((s1, s2) -> s1.length() - s2.length());说明:
- 参数类型可省略(编译器能推断),如
(String s1, String s2)可简写为(s1, s2) - 如果只有一行表达式,直接写结果;如果是代码块,需加花括号和
return
自定义函数式接口 + Lambda
定义一个简单接口:
@FunctionalInterfaceinterface Calculator {
int operate(int a, int b);
}
使用时直接传 Lambda:
Calculator add = (x, y) -> x + y;Calculator multiply = (x, y) -> x * y;
System.out.println(add.operate(3, 4)); // 输出 7
这样既保持接口的语义清晰,又避免了每次 new 实现类的样板代码。
相关文章
- 小米路由救砖工具怎么使用(小米路由救砖工具使用方法) 08-28
- 小米路由r1d脱离硬盘固件怎么设置(小米路由r1d脱离硬盘固件设置方法) 08-28
- 心动小镇2026年4月14日溜溜橡木及无暇萤石位置 08-28
- 小米路由r1d刷机红灯常亮怎么回事(小米路由r1d刷机红灯常亮什么原因) 08-28
- 小米路由r1d如何上传(小米路由r1d上传方法) 08-28
- #讲了什么-主要信息和内容重点 08-28