。Java 8中的双冒号(::)是一种特殊的语法,它允许你把一个方法当做参数传递给另一个方法。它可以让你编写更简洁优雅的代码,而不是使用传统的匿名类。
1. 双冒号(::)的示例
让我们看一个使用双冒号(::)的示例,它实现了一个简单的功能:将一个字符串转换为大写。
String str = "Hello World!"; String upperCaseStr = str.toUpperCase(); System.out.println(upperCaseStr);
上面的代码使用了传统的Java语法,我们可以使用双冒号(::)来改写它:
String str = "Hello World!"; String upperCaseStr = str.toUpperCase(); System.out.println(upperCaseStr);
使用双冒号(::)后,我们可以把toUpperCase()方法作为参数传递给String类的静态方法:
String str = "Hello World!"; String upperCaseStr = String.toUpperCase(str::toUpperCase); System.out.println(upperCaseStr);
使用双冒号(::)后,我们可以把toUpperCase()方法作为参数传递给任何接受Function接口的方法:
FunctiontoUpperCase = String::toUpperCase; String upperCaseStr = toUpperCase.apply("Hello World!"); System.out.println(upperCaseStr);
2. 双冒号(::)的应用场景
双冒号(::)可以用来实现以下几种场景:
- 引用静态方法:例如String.toUpperCase()方法。
- 引用实例方法:例如String.toUpperCase()方法。
- 引用构造函数:例如new File()构造函数。
- 引用数组构造函数:例如new int[5]数组构造函数。
双冒号(::)可以用来简化很多Java代码,特别是在使用Lambda表达式时。它也可以用来实现一些高级功能,比如方法引用和构造函数引用。