java8 方法引用详解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

java8 方法引用详解
Java 8的方法引用是一种新的语法,它可以让您直接引用方法或构造函数,而不是使用lambda表达式。

方法引用使代码更简洁,易读
和易于维护。

在Java 8之前,要使用lambda表达式,您需要在lambda表达
式的参数列表中指定参数类型并显式调用方法。

但是,如果您的
lambda表达式仅调用现有方法,则可以使用方法引用,从而避免这些
步骤。

在Java 8中,方法引用有四种形式:
1. 静态方法引用:ClassName::methodName
例如,可以使用以下方法引用调用Math类的静态方法sqrt:
```
Function<Double, Double> sqrt = Math::sqrt;
```
2. 实例方法引用:instanceName::methodName
例如,可以使用以下方法引用调用String类的实例方法length:
```
Function<String, Integer> length = String::length;
```
3. 类的任意实例方法引用:ClassName::methodName
例如,可以使用以下方法引用调用String类的实例方法toUpperCase:```
Function<String, String> upperCase = String::toUpperCase;
```
4. 构造函数引用:ClassName::new
例如,可以使用以下构造函数引用创建一个新的ArrayList对象:
```
Supplier<List<String>> listSupplier = ArrayList::new;
```
方法引用可以与lambda表达式结合使用,从而更好地表达程序的意图。

例如,以下lambda表达式可以使用实例方法引用来更简洁地表示它的意图:
```
map.forEach((k, v) -> System.out.println(k + ":" + v));
```
可以使用方法引用来重写上述例子的lambda表达式:
```
map.forEach(System.out::println);
```
总之,Java 8的方法引用使代码更简洁,易读和易于维护。

使用它可以减少冗余代码和错误,并提高代码的可读性和可维护性。

相关文档
最新文档