这是一个以谓词为参数的示例方法:
void processFields(List<WebDataField> fields, Predicate<WebDataField> predicate) {
for (WebDataField webDataField : fields) {
boolean expectedCondition = predicate.test(webDataField);
}
}
我将上述函数称为:
processFields(fields, w -> w.getFieldName().length() > 5);
另一个功能:
public void doSomething(Object someObject,Predicate<T> predicateInstance){
//doSomething method's code goes here
}
在调用方,方法doSomething()将像这样被调用–
doSomething(someObjectInstance, Integer i-> i>10)
我检查了Java 8文档中的String / Integer / Object等,但没有发现实现Predicate<T>接口的这些类中的任何一个。我不知道我在Java 8教程系列中错过了什么,但是我无法得到这种现象:
如果目标类型与Predicate类没有直接关系,编译器如何允许lambda表达式?
上述两种情况的答案是否相同?
狐的传说
相关分类