JDK8新特性(2)—— 函数式编程

1 函数式编程

  • 有些场景的代码执行之后,结果不一定被使用,从而造成性能的浪费。而 lambda 表达式是延迟执行的

1.1 性能浪费的日志案例

先把字符串拼接好,然后在调用方法

public class Demo01Logger {

    // 根据日志的级别显示日志信息的方法
    public static void showLog(int level, String msg) {
        // 对日志的等级进行判断,如果1,输出
        if (level == 1) {
            System.out.println(msg);
        }
    }

    public static void main(String[] args) {
        String msg1 = "hello";
        String msg2 = "cat";
        String msg3 = "dog";

        showLog(1, msg1 + msg2 + msg3);

    }

}

  • 使用 lambda 表达式优化案例

  • 接口

package com.tzb.funinterface.demo2;

@FunctionalInterface
public interface MessageBuilder {
    // 定义拼接消息的抽象方法
    public abstract String buildMsg();
}

package com.tzb.funinterface.demo2;


/**
 * @Description lambda 表达式优化日志案例
 * lambda特点:延迟加载
 * lambda 使用的前提:必须存在函数式接口
 * @Author tzb
 * @Date 2020/12/1 9:05
 * @Version 1.0
 **/
public class Demo02Lambda {

    public static void showLog(int level, MessageBuilder mb) {
        if (level == 1) {
            System.out.println(mb.buildMsg());
        }
    }

    public static void main(String[] args) {
        String msg1 = "hello";
        String msg2 = "cat";
        String msg3 = "dog";

        /**
         * 使用lambda 表达式作为参数传递,仅仅是把参数传递到showLog方法中,
         * 只有满足条件,日志等级是1级,才会调用接口MessageBuilder中的方法 buildMsg,才会拼接字符串
         */
        // MessageBuilder 是一个函数式接口,所以可以传递 lambda 表达式
        showLog(2, ()->{
            return msg1 + msg2 + msg3;
        });
    }
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值