lambda表达式
1.格式
- (形式参数) -> {代码块}
- 形式参数:如果有多个参数,参数之间用逗号隔开;如果没有参数,留空即可
- –>:由英文中画线和大于符号组成,固定写法。代表指向动作
代码块:是我们具体要做的事情,也就是以前我们写的方法体内容
2.使用前提
- 有一个接口
- 接口中有且仅有一个抽象方法
3.示例
// 接口
public interface Addable {
int add(int x,int y);
}
public class AddableDemo {
//主方法
public static void main(String[] args) {
//在主方法中调用useAddable方法
//lambda实现
useAddable((int x,int y) -> {
return x + y;
//匿名内部类实现
useAddable(new Addable() {
@Override
public int add(int x, int y) {
return x + y;
}
});
});
}
//实现方法
private static void useAddable(Addable a) {
int sum = a.add(10, 20);
System.out.println(sum);
}
}
4.省略模式
-
规则
- 参数类型可以省略。但是有多个参数的情况下,不能只省略一个
- 如果参数有且仅有一个,那么小括号可以省略
- 如果代码块的语句只有一条,可以省略大括号和分号,和return关键字
-
示例1
// 省略参数类型
useAddable((int x,int y) -> {
return x + y;
});
//参数的类型可以省略
useAddable((x, y) -> {
return x + y;
});
注意:有多个参数,省略参数类型必须全部省略
- 示例2
// 省略参数小括号
useFlyable((String s) -> {
System.out.println(s);
});
//如果参数有且仅有一个,那么小括号可以省略
useFlyable(s -> {
System.out.println(s);
});
- 示例三:代码块只有一句
//如果代码块的语句只有一条,可以省略大括号和分号
useFlyable(s -> System.out.println(s));
//如果代码块的语句只有一条,可以省略大括号和分号,如果有return,return也要省略掉
useAddable((x, y) -> x + y);