【Java基础】——函数式编程( Lambda表达式和方法引用)
·
【Java基础】——函数式编程( Lambda表达式和方法引用)
函数式编程
1. Lambda表达式
(被重写方法的形参列表) ->{
被重写方法的方法体代码。
}
- 可以用于替代某些匿名内部类对象,从而让程序更简洁,可读性更好。
- Lambda表达式只能替代函数式接口(有且仅有一个抽象方法的接口)的匿名内部类。
函数式接口:
只有一个抽象方法的接口就是函数式接口。
在接口上加上@Funcationallnterface注解即可。

- 因为能从上下文推断出真正的代码所以能简化。
Lambda表达式的省略规则:
- 参数类型全部可以省略不写。
- 如果只有一个参数,参数类型省略的同时
()也可以省略,但多个参数不能省略()。 - 如果Lambda表达式中只有一行代码,大括号可以不写,同时要省略分号
;如果这行代码是return语句,也必须去掉return。

2. 方法引用
2.1 静态方法引用
- 使用场景:如果某个Lambda表达式里只是调用一个静态方法,并且“→”前后参数的形式一致,就可以使用静态方法引用。
- 使用:类名::静态方法
静态方法:

参数形式一致:

2.2 实例方法引用
- 使用场景:如果某个Lambda表达式里只是通过对象名称调用一个实例方法,并且
→前后参数的形式一致,就可以使用实例方法引用。 - 使用:对象名::实例方法
实例方法:

调用实例方法:

2.3 特定类的方法引用
- 使用场景:如果某个Lambda表达式里只是调用一个特定类型的实例方法,并且前面参数列表中的第一个参数是作为方法的主调,后面的所有参数都是作为该实例方法的入参的,则此时就可以使用特定类型的方法引用。
- 使用:特定类的名称::方法
拿o1的字符串对象调用字符串的实例方法compareToIgnoreCase:

2.4 构造器引用
- 使用场景:如果某个Lambda表达式里只是在创建对象,并且
→前后参数情况一致,就可以使用构造器引用。 - 使用:类名::new
创建类和接口:

创建接口的匿名内部类:

更多推荐

所有评论(0)