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常量类型。

上一篇下一篇

猜你喜欢

热点阅读