【发布时间】:2015-05-20 11:00:10
【问题描述】:
我使用 google guava 谓词,我想过滤它以便能够删除其中的一些。
例如在这段代码中
Predicates.or(
Predicates.and(p1, p2, Predicates.or(p3, p4)),
Predicates.and(p3, p2, Predicates.or(p1, p4))
Predicates.and(p3, p2, Predicates.or(Predicates.and(p1, p2), Predicates.and(p2, p3)))
);
我想删除p1,所以结果应该是这样的
Predicates.or(
Predicates.and(p2, Predicates.or(p3, p4)),
Predicates.and(p3, p2, Predicates.or(p4))
Predicates.and(p3, p2, Predicates.or(Predicates.and(p2), Predicates.and(p2, p3)))
);
有可能吗?如果是,怎么做?
为什么?我们重用了一些带有异常的谓词。
【问题讨论】:
-
remove是什么意思?您想重构代码,以便不使用p1并且代码编译正常? -
Predicates是某种列表,我想从列表中删除项目(如您在示例中看到的嵌套列表)。 -
Predicates是一个 builder,其中包含一些指令。不能 100% 确定在内部它是一个列表,即使它是一个列表,这个列表也不会向公众公开,这意味着它不应该被直接访问和更改。 -
您可能是对的,但我的问题是 - 是否可以从此构建器/列表中删除谓词?
-
不,我不这么认为。