【发布时间】:2018-07-08 07:39:16
【问题描述】:
这是一个将 Predicate 作为参数的示例方法:
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 表达式?
上述两种情况的答案是否相同?
【问题讨论】:
标签: java generics lambda java-8