我正在使用
andPredicate = Predicates.and(firstPredicate, secondPredicate);
现在我必须序列化andPredicate
(作为 JsonObject)并且需要访问已用谓词的内部列表以访问每个谓词的成员。
有没有办法访问这些?
我正在使用
andPredicate = Predicates.and(firstPredicate, secondPredicate);
现在我必须序列化andPredicate
(作为 JsonObject)并且需要访问已用谓词的内部列表以访问每个谓词的成员。
有没有办法访问这些?
如果您需要这样的行为,答案是创建您自己的 Predicates.and() 版本,这一点也不难。Guava 对 Predicates.and 的内部实现(正确地)是一个实现细节,而不是暴露给用户的东西。
我认为没有直接的方法可以得到这个。
无论如何,作为一种解决方法,您可以使用 andPredicate 对象的 toString() 方法。此方法的实现(在此处列出)将返回如下值:
And(<firstPredicate.toString()>, <secondPredicate.toString()>)
在哪里可以获得括号内容,并分析每个条目。
由于每个条目也可以是and
,or
或其他组合谓词,因此在处理逗号和括号时要小心。
正如Javadoc类所述,andPredicate 已经是可序列化的:
只要给定了可序列化的参数,所有方法都会返回可序列化的谓词。