2017-02-13 93 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

接口謂詞
...
類型參數:
筆 - 輸入的類型謂語