谓词#和:任何访问内部谓词的方法?

时间:2012-01-03 09:52:34

标签: java guava predicates

我正在使用

andPredicate = Predicates.and(firstPredicate, secondPredicate);

现在我必须序列化andPredicate(作为JsonObject)并且需要访问所使用谓词的内部列表以获得对每个单个谓词的成员的访问权。

有没有办法访问这些?

3 个答案:

答案 0 :(得分:3)

如果您需要这样的行为,那么答案就是制作您自己的Predicates.and()版本,这根本不是太难。 Guava的Predicates.and的内部实现(正确)是一个实现细节,而不是暴露给用户的东西。

答案 1 :(得分:1)

我认为没有直接的方法可以解决这个问题。

无论如何,作为一种解决方法,您可以使用andPredicate对象的toString()方法。 此方法的实现(列出here)将返回如下值:

And(<firstPredicate.toString()>, <secondPredicate.toString()>)

您可以在哪里获取括号内容,并分析每个条目。

由于每个条目也可以是andor或其他撰写谓词,因此请小心处理逗号和括号。

答案 2 :(得分:1)

正如类Javadoc所述,andPredicate已经可序列化:

  

只要给出了所有方法,它们都会返回可序列化的谓词   可序列化的参数。