Lambda表达式
Lambda表达式
要使用lambda表达式就要要使用java 8,使用Lambda表达式可以让我们的代码更少,看上去更简洁;它是为了简化了函数式接口匿名内部类的语法。
Lambda只能接受函数式接口,所谓的函数式接口指的是只能有一个抽象方法的接口。
Lambda表达式语法
Lambda表达式通过操作符->分为两个部分:
-
左侧:指定了Lambda表达式所需要的所有参数。
-
右侧:指定了Lambda体,即Lambda表达式所要执行的功能。
() ->{System.out.println("你好,啊辉吖!")}
public class LambdaExample {
public static void main(String[] args) {
//普通写法(匿名内部类)
Thread thread = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("Ordinary Writing");
}
});
thread.start();
//Lambda写法。无参无返回void
Thread thread1 = new Thread(() -> System.out.println("Lambda Writing"));
thread1.start();
}
}
******************【运行结果】******************
Ordinary Writing
Lambda Writing
什么是函数式接口
只允许有一个抽象方法的接口,那么它就是一个函数式接口。针对函数式接口,官方给我们提供了一个注解@FunctionalInterface,该注解会检查它是否是一个函数式接口,所以如果我们需要自定义一个函数式接口的话,可以在接口类的上方声明@FunctionalInterface。
需要注意的是,数式接口虽然规定只能有一个抽象方法,但是同时可以有多个非抽象方法(如静态方法,默认方法,私有方法)。下面是一个自定义的函数式接口:
@FunctionalInterface
public interface FunctionalInterface {
/**
* 抽象方法(只能有一个)
*/
void method();
//void method1();再定义一个会提示:找到多个抽象方法
/**
* 默认方法,必须用default修饰
*/
default void defaultMethod() {
System.out.println("默认方法...");
}
/**
* 静态方法方法
*/
static void staticMethod() {
System.out.println("静态方法...");
}
}
需要注意的是,使用Lamdba表达式虽然能简化开发,但如果写的不好,运行调试和后期维护就会比较麻烦。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了