Lambda表达式

一.背景

        Java 是面向对象语言,除了部分简单数据类型,Java 中的一切都是对象,
即使数组也是一种对象。在 Java 中定义的方法不可能完全独立,也不能将方法
作为参数或返回一个方法给实例。
       在 Java 8 以前,若我们想要把某些功能传递给某个方法,总要去写内部类
或匿名内部类类。代码示例:
list.sort(new Comparator<User>() {
   @Override
   public int compare(User o1, User o2) {
       return o1.getId()-o2.getId();
    }
}
       在上面的例子里,为了对集合集合进行排序,我们为 Comparator 接口创建
了一个它的匿名内部类对象,重写接口中的方法,来实现排序功能.
       简而言之,在 Java 里将普通的方法像参数一样传值并不简单,为此,Java 8
增加了一个语言级的新特性,名为 Lambda 表达式。

二.简介

       Lambda 表达式是一个匿名函数,我们可以把 lambda 表达式理解为一段
可以传递的代码(将代码段像数据一样传递)。使用它可以写出更简洁, 更灵
活的代码。作为一种更紧凑的代码风格,使 java 语言的表达式能力得到的提升。
       Lambda 表达式的本质只是一个 "语法糖" ,由编译器推断并帮你转换包装为
常规的代码,因此你可以使用更少的代码来实现同样的功能。

三.语法

       Lambda表达式由三个部分组成:参数列表、箭头符号和表达式体。

       例:  (    )  ->   {       }

      其中,参数列表可以是空的、包含一个参数或多个参数,表达式体可以是一个表达式,也可以是一个代码块。

List<String> list =Arrays.asList("sss","zzz","xxx");
//使用Lambda遍历
list.forEash(item -> System.out.println(item));
//正常写法
for(String item : list){
    System.out.println(item);
}
注意:
        Lambda 表达式只支持函数式接口 也就是只有一个抽象方法的接口.功能
接口是 java 8 中的新增功能,它们只允许一个抽象方法。这些接口也称为单抽
象方法接口。Java 8 也引入了一个注释,即@FunctionalInterface
       Java提供了很多内置的函数式接口,Comparator、Runnable、Function等。

总结

1.Lambda表达式是一个匿名函数,把函数当做参数一样传递,简化了内部匿名类

2.使用Lambda表达式接口中只能有一个抽象方法

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值