只能用于函数式接口
语法如下:
/**
* ():表示参数列表,不需要指定参数的类型,会自动推断
* -> :链接符
* {} :表示方法体
*/
实例1
@FunctionalInterface
interface IWorker {
void test();
}
/**
* ():表示参数列表,不需要指定参数的类型,会自动推断
* -> :链接符
* {} :表示方法体
*/
IWorker worker1 = () -> {
System.out.println("lambda worker");
};
worker1.test();
输出:lambda worker
实例2:带参数的函数式接口
@FunctionalInterface
interface IWorker2 {
void say(String name, int age);
}
/**
* 简化版本
* 1.如果只有一行代码,可以省略方法体({})声明
* 2.如果有返回值,甚至连return 都可以省略;
*/
IWorker worker2 = () -> System.out.println("simple lambda worker");
worker2.test();
输出:simple lambda worker
实例3:最简化 带参数的函数式接口
@FunctionalInterface
interface IWorker3 {
void say(String desc);
}
/**
* 如果只有一个参数,可以省略中括号;
*/
IWorker3 iWorker3 = desc -> System.out.println("这是我的介绍词语:" + desc);
iWorker3.say("张三,24");
输出:这是我的介绍词语:张三,24
实例4:带返回值的最简化函数式接口
@FunctionalInterface
interface IWorker4 {
String say(String desc);
}
/**
* 如果是带返回值的函数式接口,这个时候省略花括号,那么return关键字也必须省略;
*/
IWorker4 iWorker4 = desc -> desc + desc;
System.out.println(iWorker4.say("hello"));
输出:hellohello