2014-01-07 34 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