【发布时间】:2017-02-13 14:40:51
【问题描述】:
我在理解 Java 谓词时遇到问题...
例子:
public class UserPredicates {
public static Predicate<User> isNameEmpty() {
return p -> p.getFirstName().isEmpty() && p.getLastName().isEmpty();
}
}
上面的例子让我很困惑,怎么知道p有getFirstName()和getLastName()的方法?
如果我理解正确的话,isNameEmpty() 返回一个带有一个参数的函数(p),但是编译器真的通过查看返回类型就知道类型了吗?
而返回的函数是来自 Predicate 接口的test()?
【问题讨论】:
-
编译器真的通过查看返回类型来判断类型吗? 完全正确。如果你想明确一点,你可以
(User p) -> ...。