lambda表达式特殊实例方法引用
时间: 2023-12-08 08:07:23 浏览: 30
lambda表达式可以用来创建匿名函数,而特殊实例方法引用是lambda表达式的一种特殊用法。特殊实例方法引用允许将已经存在的实例方法作为lambda表达式的实现。它的语法形式是 `ClassName::methodName`,其中ClassName是类名,methodName是方法名。
下面是一个具体的示例:
```java
import java.util.function.Predicate;
public class LambdaMethodReferenceExample {
public static void main(String[] args) {
String str = "hello";
// 使用lambda表达式
Predicate<String> lambdaPredicate = s -> str.startsWith(s);
System.out.println(lambdaPredicate.test("he")); // 输出:true
// 使用特殊实例方法引用
Predicate<String> methodReferencePredicate = str::startsWith;
System.out.println(methodReferencePredicate.test("he")); // 输出:true
}
}
```
在上面的示例中,我们使用了lambda表达式和特殊实例方法引用来创建一个Predicate(断言)对象。该断言对象用于判断给定的字符串是否以指定字符串开头。
在lambda表达式中,我们使用了`s -> str.startsWith(s)`来表示一个函数,其中`s`是传入的参数,`str.startsWith(s)`是函数的实现。
而在特殊实例方法引用中,我们使用了`str::startsWith`来表示函数的实现,它等价于`String::startsWith`,其中`str`是方法的调用者,`startsWith`是方法名。
需要注意的是,特殊实例方法引用只能用于那些不接受任何参数的方法,或者第一个参数是调用者的方法。