JAVA 8 Lambda表达式问题
2020-11-29 本文已影响0人
喵喵不吃鱼哦
Consumer
void accept(T t);
参数:T
返回值:无
Interface Consumer<T>
Consumer consumer =new Consumer() {
@Override
public void accept(Object o) {
}
};
Function
R apply(T t);
参数:T
返回值:R
Function function = new Function() {
@Override
public Object apply(Object o) {
return null;
}
};
Predicate
boolean test(T t);
参数:T
返回值:boolean
Predicate predicate = new Predicate() {
@Override
public boolean test(Object o) {
return false;
}
};
Supplier
T get();
参数:无
返回值:T
Supplier supplier = new Supplier() {
@Override
public Object get() {
return null;
}
};
闭包问题:
"闭包会提升包围变量的生命周期"
public class LambdaTest {
public static void main(String[] args) {
Integer integer = getNum().get();
System.out.println("integer = " + integer);
}
private static Supplier<Integer> getNum(){
int num = 1010;
return () -> num;
//闭包会提升包围变量的生命周期
}
}
当在闭包中使用到了一个局部变量值,将自动将该变量编译成final常量类型。