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表达式虽然能简化开发,但如果写的不好,运行调试和后期维护就会比较麻烦。
标签:函数,void,接口,println,表达式,Lambda From: https://www.cnblogs.com/ahui-blog/p/17701122.html