这个问题涉及到函数接口的赋值语境 -
Predicate<String> p = String::isEmpty;
在String类中,isEmpty
方法声明如下:public boolean isEmpty(){}
。这个方法可以正常工作。
如果我尝试在自定义类中声明相同的方法,代码如下 -
class Test{
public boolean isEmpty(){
...
}
}
同时进行相同的赋值操作 -
Predicate<String> p = Test::isEmpty;
这将是编译错误 -
类型Test未定义可用于此处的isEmpty(String)
Predicate<T>
表示一个带有一个参数的谓词(布尔值函数),其功能方法为boolean test(T t){}
。
需要解释吗?我有漏掉什么吗?