定义:
什么是lambda表达式?可以理解为一种特殊的匿名内部类。在日常编码中,如果你需要有一个函数,但是又不想费神的去命名一个函数的情况下使用它,那这就是匿名函数。
使用场景:
只有是函数式接口的才可以使用,而函数式接口即是指接口中之定义了一个抽象方法的接口(Object中的方法除外),即一个接口中只有一个函数需要被实现的,我们称为“函数式接口”
作用:
简化代码,对比传统的java对于一个接口的实现,会发现要么采用定义一个实现类的方式,要么就采用匿名内部类的形式,比如我们的Thread类
1 2代码简介一目了然...
日常开发使用:
1:配合jdk8提供的 java.util.function 包下定义的常用函数接口,如
Predicate
Consumer
Function
等定义好的函数接口,可以使用,我们可以看下他们的定义,看一个函数式接口,主要是看其唯一抽象方法(需要被实现的方法)的入参和出参即可,其方法名不重要。
如
32:优化集合操作
使用Iterable 接口的foreach方法时,传入Consumer<? super T> action 函数式接口,可以使用lambda表达式简化代码
尽量集合操作使用jak8新增的Stream 流接口操作集合。
4而Stream流接口中的方法几乎都需要传入函数接口,从而可以利用lambda简化我们操作集合的代码。而且还支持并发操作集合。
5更简洁一步:
如果我们的lambda方法体中仅仅是调用已有的方法,比如:System.out.println();有没有更简洁的写法呢?别急,java8提供了方法引用来满足我们的小期望。
方法引用:
Method Reference:用已有的方法来替换lambda表达式,从而实现更简洁的代码规范。
写法:大概分为两类,对象调用;类调用
对象调用: Object :: methodName
类调用: Class :: staticMethod
如:System.out::println; 注意没有括号。
null的优雅处理:
利用lambda表达式,配合使用Optional<T> 可以使Java对于null的处理更为优雅。下面简单介绍一下。
我们知道,jdk8在 util包下提供了一个叫做Optional的类,用于优化处理null,但是实际的使用中发现,我们的工作了好像多了一步
6 7利用Optional + lambda表达式的方式简化代码
89
连续if判断优化
10lambda表达式这么优雅,以后多用吧
网友评论