理解Java谓词

时间:2017-02-13 06:37:13

标签: java lambda predicate

我在理解Java Predicates时遇到问题......

示例:

public class UserPredicates {
 public static Predicate<User> isNameEmpty() {
  return p -> p.getFirstName().isEmpty() && p.getLastName().isEmpty();
 }
}

以上示例让我感到困惑,它如何知道p有方法getFirstName()getLastName()? 如果我理解正确,isNameEmpty()返回一个带有一个参数(p)的函数,但编译器是否真的通过查看返回类型来确定类型?

返回的函数是Predicate接口的test()吗?

1 个答案:

答案 0 :(得分:2)

Predicate<User>表示以User为参数的函数,并返回boolean

请参阅Javadoc

  

界面谓词
  ...
     类型参数:
         T - 谓词输入的类型