Lamada表达式 Java8新特性详解
Lamada表达式 Java8新特性详解
1.介绍
1.1什么是lamada表达式
lambda表达式代替了匿名内部类的写法, Java8之后的新特性
参数、返回值类型和要实现的接口的方法参数、返回值类型对应,语句表达式就是方法体
1.2语法格式
格式:()->{} 、()-返回值
圆括号里放的是接口唯一方法的参数,大括号放的是表达式,后面或者是放的return语句的返回值
2.相关注意事项
2.1匿名内部类的注意事项
匿名内部类的简写方式
1、实现某个接口
2、该接口中仅有 一个 抽象方法
3、抽象类不能使用Lambda表达式
2.2省略注意
1、参数类型可以省略
2、当方法中只有一行代码时,大括号可以省略
3、当方法中只有一行代码时,return关键字可以省略(大括号也要省)
4、当方法的参数列表中只有一个参数时,小括号可以省略
5、当方法的参数列表中没有参数时,小括号不能省略
3.常用的接口使用lambda表达式
接口 | 方法 | 参数 | 返回值 | 作用 | 使用场景 |
---|---|---|---|---|---|
Predicate | test(Object o) | Object o | boolean | 过滤规则 | 在list中使用removeIf()方法,过滤文件的操作listfiles()方法 |
UnaryOperater | apply(Object o) | Object o | Object | 替代规则 | list集合中replaceAll()方法中使用 |
Comparator | compare(Object o1,Object o2) | Object o1,Object o2 | int | 排序规则 | 配合list.sort()方者Collections.sort中排序使用 |
Filefilter | accpt(File pathname) | File pathname | boolean | 文件过滤 | 在过滤文件的时候使用 |
Comparable | compareTo(Object o) | Object o | int | 排序规则 | 在排序的时候使用 |
BiConsumer | accept(K k,V v) | K k,V v | void | 遍历map集合 | 在遍历map的时候使用 |
BiFunction | apply(K k,V v) | K k,V v | void | 元素替代 | 在map集合中的replaceAll()方法中使用 |
Consumer | accept(T t) | T t | void | 消费性接口 | |
Function | apply(T t) | T t | R | 函数型接口 | 对类型为T的对象进行操作 R apply(T t) |
4.手写一个接口Inner1来实现lamda表达式
()->{}:该匿名方法用于重写Inner中的抽象方法test
public class Demo2 {
public static void main(String[] args) {
Inner1 i1 = () -> {
System.out.println("test1");
};
i1.test1(