美文网首页
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