Предикаты # и: любой способ получить доступ к внутренним предикатам? - PullRequest
1 голос
/ 03 января 2012

Я использую

andPredicate = Predicates.and(firstPredicate, secondPredicate);

Теперь мне нужно сериализовать andPredicate (как JsonObject) и мне нужен доступ к внутреннему списку используемых предикатов для получения доступачленам каждого предиката.

Есть ли способ получить к ним доступ?

Ответы [ 3 ]

3 голосов
/ 03 января 2012

Если вам нужно такое поведение, ответ заключается в том, чтобы создать свою собственную версию Predicates.and (), которая совсем не сложна. Внутренняя реализация Guava для Predicates.and - это (правильно) деталь реализации, а не что-то открытое для пользователя.

1 голос
/ 03 января 2012

Как утверждает класс Javadoc , andPredicate уже сериализуем:

Все методы возвращают сериализуемые предикаты, если им даны параметры сериализации.

1 голос
/ 03 января 2012

Я думаю, что нет прямого способа получить это.

В любом случае, в качестве обходного пути, вы можете использовать метод toString () объекта andPredicate.Реализация этого метода (в списке здесь ) вернет значение, подобное следующему:

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

Где вы можете получить содержимое скобок и проанализировать каждую запись.

Поскольку каждая запись также может быть and, or или другим составным предикатом, будьте осторожны при обработке запятых и скобок.

...