java - 理解 Java 谓词

标签 java lambda predicate

我在理解 Java 谓词时遇到问题...

示例:

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

上面的例子让我很困惑,它怎么知道p有方法getFirstName()getLastName()
如果我理解正确的话,isNameEmpty() 返回一个带有一个参数的函数 (p),但是编译器真的通过查看返回类型来确定类型吗?

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

最佳答案

Predicate<User>表示采用 User 的函数作为其参数,并返回 boolean .

参见Javadoc :

Interface Predicate
...
Type Parameters:
T - the type of the input to the predicate

关于java - 理解 Java 谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42197972/

相关文章:

java - 在 Java 项目中组织包的优缺点

c++ - 我如何将 lambda 表达式作为参数传递给 C++ 模板

c# - 使用表达式树读取对象的属性

comparison - 哈希表的相等谓词

c# - 如何组合多个 Func<> 委托(delegate)

java - 如何使用 JPA 或 JPQL 从没有主键列的实体中获取记录

java - 由于缺少库而导致构建失败

java - 如果流是使用Java中的某些字符串或字节数组对象组成的,是否需要关闭InputStream?

java - 有没有办法将双 `for` 循环更改为 java 8 lambda 表达式?

arrays - Swift 4 Struct 按包含的参数搜索