2017-02-13 185 views
0

我了解Java谓词一个问题...了解Java谓词

例子:

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

上面的例子混淆对我来说,它是如何知道p有方法getFirstName()getLastName()
如果我理解正确的话,isNameEmpty()返回与一个参数(p)的功能,但是编译器真的通过查看返回类型找出类型?

并且返回的功能与谓词接口test()

+0

*该编译器真正弄清楚通过查看返回类型来键入?*完全正确。如果你想明确,你可以做'(用户p) - > ...'。 – shmosel

回答

1

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

Javadoc

接口谓词
...
类型参数:
笔 - 输入的类型谓语