JAVA单排日记-2020/2/1-函数式接口_函数优化日志

有些场景的代码执行后,结果不一定会被使用,从而造成性能浪费。

public class Demo02 {
    public static void main(String[] args) {
        String str1 = "a";
        String str2 = "b";
        String str3 = "c";
        
        log(2,str1+str2+str3);
    }

    public static void log(int num,String message){
        if (num==1){//如果日志等级为1,则输出日志信息
            System.out.println(message);
        }
    }
}

在这里插入图片描述
而Lambda表达式是延迟执行的,这正好可以作为解决方案,提升性能。
Lambda表达式使用前提:存在函数式接口

定义一个接口传递盛放拼接好的字符串

@FunctionalInterface
public interface StringB {
    public abstract String stringBulid();
}

主程序调用的方法中使用Lambda表达式

public class Demo02 {
    public static void main(String[] args) {
        String str1 = "a";
        String str2 = "b";
        String str3 = "c";
        
        //调用log()方法,StringB为一个函数式接口,所以可以使用Lambda表达式
        //log(2,()->{return str1+str2+str3;});
        // 有且只有一行,{}可以省略,{}如果省略return和末尾;也去掉
        log(2,()->str1+str2+str3);

    }

    public static void log(int num,StringB message){
        if (num==1){//如果日志等级为1,则输出日志信息
            System.out.println( message.stringBulid());
        }
    }
}

在这里插入图片描述

发布了131 篇原创文章 · 获赞 1 · 访问量 4452

猜你喜欢

转载自blog.csdn.net/wangzilong1995/article/details/104130771
今日推荐