美文网首页
JAVA 8 Lambda表达式问题

JAVA 8 Lambda表达式问题

作者: 喵喵不吃鱼哦 | 来源:发表于2020-11-29 21:22 被阅读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常量类型。

    相关文章

      网友评论

          本文标题:JAVA 8 Lambda表达式问题

          本文链接:https://www.haomeiwen.com/subject/ksxlwktx.html