函数式接口
- 任何接口,如果只包含唯一一个抽象方法,那么他就是一个函数式接口
| public interface Runnable{ |
| public abstract void run(); |
| } |
- 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象
lambda表达式
练习一:
| |
| public class TestLambda1 { |
| |
| static class Like2 implements ILike{ |
| |
| @Override |
| public void lambda() { |
| System.out.println("i like lambda-->静态内部类"); |
| } |
| } |
| |
| |
| |
| |
| public static void main(String[] args) { |
| ILike like = new Like(); |
| like.lambda(); |
| |
| like = new Like2(); |
| like.lambda(); |
| |
| |
| class Like3 implements ILike{ |
| |
| @Override |
| public void lambda() { |
| System.out.println("i like lambda-->局部内部类"); |
| } |
| } |
| like = new Like3(); |
| like.lambda(); |
| |
| |
| |
| like = new ILike() { |
| @Override |
| public void lambda() { |
| System.out.println("i like lambda-->匿名内部类"); |
| } |
| }; |
| like.lambda(); |
| |
| |
| like =()->{ |
| System.out.println("i like lambda-->lambda简化"); |
| }; |
| like.lambda(); |
| |
| |
| |
| } |
| } |
| |
| |
| interface ILike{ |
| void lambda(); |
| } |
| |
| |
| class Like implements ILike{ |
| |
| @Override |
| public void lambda() { |
| System.out.println("i like lambda"); |
| } |
| } |
| |
- 运行结果

练习二:
| public class TestLambda2 { |
| |
| public static void main(String[] args) { |
| |
| Love love = null; |
| |
| love =(int a)-> { |
| System.out.println("i love "+a); |
| }; |
| |
| love =a-> { |
| System.out.println("i love "+a); |
| }; |
| |
| |
| |
| |
| |
| |
| |
| love =a->System.out.println("i love "+a); |
| |
| love.love(666); |
| |
| |
| |
| |
| |
| |
| |
| |
| } |
| |
| } |
| |
| |
| interface Love{ |
| void love(int a); |
| } |
总结:
lambda表达式只能有一行代码情况下才能简化成为一行,如果有多行,那么就用代码块包裹
前提:接口是函数式接口
多个参数也可以去掉参数类型,要去掉必须全部去掉,必须加上括号
为什么要使用Lambda表达式
- 避免匿名内部类定义过多
- 使代码看起来简洁
- 去掉了一堆没有意义的代码,留下核心代码
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!