特征
- 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
- 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。
- 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。
- 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回值,大括号需要指定明表达式返回了一个数值。
与python差异
python 用lamda关键字实现
java 通过函数式接口实现
函数式接口
函数式接口(Functional Interface)就是一个有且仅有一个抽象方法,但是可以有多个非抽象方法的接口。
就是用函数实现接口,支持lamda表达式
内置常用接口 例子
Predicate
Predicate<Integer> b = (it)->it>3;
boolean test = b.test(5);
System.out.println(test);
Function
Function<Integer,String> b = String::valueOf;
String apply = b.apply(5);
System.out.println(apply.getClass());
Supplier
Supplier<Date> b = Date::new;
Date aBoolean = b.get();
System.out.println(aBoolean);
Consumer
ArrayList<Object> objects3 = new ArrayList<>();
Consumer<Date> b = objects3::add;
b.accept(new Date());
b.accept(new Date());
System.out.println(objects3);