@FunctionalInterface public interface demo_stringbuild { public abstract String string_build(); }
测试类,方法为一个日志输出方法,设置等级不同,输出方式不同,例如下边,只有等级为1才会输出,那么如果等级为2,日志不输出,是否可以不拼接show方法中接口的字符串,节省硬件,答案是肯定的,使用lambda书写,它具有延时性,只用调用了,才会执行。
public class demo_lambda { public static void main(String[] args) { String a1="Hello,"; String a2="World"; show(1,()->a1+a2); show(1,()->{ System.out.println("只有被用到才执行1!"); return a1+a2; }); // 参数为2,不满足level == 1,不用进入if方法体内,d.string_build()不会被调用,所以lambda不会被执行,节省硬件性能 show(2,()->{ System.out.println("只有被用到才执行2!"); return a1+a2; }); } private static void show(int level, demo_stringbuild d) { if (level == 1) { System.out.println(d.string_build()); } } }
Hello,World 只有被用到才执行1! Hello,World
控制台并没有输出
只有被用到才执行2!
Hello,World
证明,当参数为2的时候,lambda并没有执行,节省硬件。