JDK 8 新特性 lambda 表达式

本文主旨在说明使用lambda 表达式的缘由和 lambda 表达式 如何使用


前言

本篇博客立意:

JDK 8 虽然发布那么久了,一些特性也从未做总结,目前项目里边大量使用,特做此篇记录。与诸君共勉;


lamdba 表达式概念,运用

一、lambda 表达式

Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

二、lambda运用

1. 什么是匿名函数

顾名思意 不起名字直接能使用的函数 的叫匿名函数;那 java 中的函数长什么样子呢? 我们都知道 java 里边都是方法,一个接口对应多个方法,或者是一个方法,其中一个接口对应一个方法的就叫做 函数式接口。在 jdk1.8中函数式接口有如下几种特点:
1. 只有一个public 方法,其余可以有 default 方法,可以重写object 方法;在jdk 8 中 使用@FunctionalInterface 编译期检查是否是函数式接口,下面代码就是一个函数式接口;

@FunctionalInterface
public interface Predicate<T> {

    /**
     * Evaluates this predicate on the given argument.
     *
     * @param t the input argument
     * @return {@code true} if the input argument matches the predicate,
     * otherwise {@code false}
     */
    boolean test(T t);

2. 如何实例化一个接口

代码如下(示例):

List list = new ArrayList();
// 实现方法二
List list = new List() {
   @Override
   public int size() {
      return 0;
   }
  //省略其他方法 是需要实现的
};

第一种方法需要一个子类去 implements List 接口,而第二种方法需在使用List 接口的地方 实现List 接口的所有方法从而达到new List 的目的;

3. 如何调用匿名函数

  1. 说到匿名函数,我们看看非匿名函数
// 启动线程代码
new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("strat");
    }
}).start();

我们可以看到 new Runnable() 出来后并没有给该Runnable 接口一个名字 既:Runnable a = new Runnable() ; 所以在这里 这个Runnable 就称之为匿名函数,同时 Runnable 接口也符合jdk 8 定义的函数式接口 ,当然 lambda 表达式出现就是为了使 我们调用这种匿名接口更为方便,代码也更为简洁。

4. lambda 表达式 使用

使用 lambda 表达式 实现一个线程的启动,一行代码,省去了那些没有含义的代码( 匿名函数 ),;

// 启动线程代码
new Thread(() -> System.out.println("star")).start();
// 有参的方法使用lambda 表达式
userList.forEach((user) -> System.out.println(user.getName()));

总结

lambda 表达式 的运用使得我们的代码更为简洁,可读性更高 。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值