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());
        }
    }
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值