美文网首页
Lambda表达式学习_1_延迟执行

Lambda表达式学习_1_延迟执行

作者: vb12 | 来源:发表于2018-06-02 09:54 被阅读89次

延迟执行

所有的lambda表达式都是延迟执行的. 在需要的时候才运行代码.

考虑下面一个场景:

logger.info("x:"+x+"y:"+y);

当我们在代码中写下这句代码时, 不管当前的日志级别是什么, 小括号内的字符串拼接操作都会运行, 而我们知道, 如果当前日志级别高于info, 那么这个字符串拼接操作完全是无意义的.

解决这个问题, 就可以使用lambda表达式

    public static void info(Supplier<String> msg) {
        if (isLoggable(Level.INFO)) {
            System.out.println(msg.get());
        }
    }

    public static void main(String[] args) {
        Log.i(() -> getMessage());
    }

    private static String getMessage() {
        System.out.println("getMessage.....");
        return "real message";
    }


    private static boolean isLoggable(Level info) {
        return false;
    }

当isLoggable() 返回false时, 运行结果中并不会包含"getMessage....."打印.

Supplier<String> 或者说Supplier<T> 简单理解成返回值类型为String或者通用T类型(任何类型)的接口方法.

相关文章

网友评论

      本文标题:Lambda表达式学习_1_延迟执行

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