2014-01-07 27 views
0

我讀這篇文章關於番石榴謂詞如何在不使用過濾器的情況下調用番石榴謂詞?

http://blog.solidcraft.eu/2010/10/googole-guava-v07-examples.html

Predicates/Functions

有寫便條點:

的調用會(返回布爾值):

Predicates.in(users).apply(shouldNotHaveDigitsInLoginPredicate);

我不能這樣做。

我的IDE寫道,該方法不適用於此類型。

請幫幫我。

+0

這是很老的文章。而是指最新的數據來源(番石榴的變化相當多,而且由於定期刪除方法,所以這些變化有時不兼容。)官方文檔相當不錯:http://code.google.com/p/guava-libraries/wiki/FunctionalExplained –

回答

1

博客條目沒有意義。看看API爲Predicates

Predicates.in(users)創造了泛型類型User,即Predicate<User>Predicate。該謂詞在其Predicate#apply(T)方法中採用類型User的參數。類別ShouldNotHaveDigitsInLoginPredicate實施Predicate<User>本身,因此而不是類型User。因此,您的IDE會警告您類型不匹配。

你可以做的是:

User user = getSomeUser(); 
Predicates.and(Predicates.in(users), new ShouldNotHaveDigitsInLoginPredicate()) 
    .apply(user); 
+0

* shouldNotHaveDigitsInLoginPredicate *(從小s開始) - 它是什麼? – gstackoverflow

+0

我只是假設它是一個指向'ShouldNotHaveDigitsInLoginPredicate'實例的變量。也許這只是博客中的一個錯字。 –

+0

的確如此)我以前也這麼認爲,但是我犯了一些錯誤,並且有編譯錯誤 – gstackoverflow