我只是查看了 AndPredicate 和 ALWAYS_FALSE 谓词,没有发现任何迹象表明 AndPredicate 注意到 ALWAYS_FALSE 组件自身短路。
如果 Predicate 已知为 ALWAYS_TRUE 或 ALWAYS_FALSE,似乎有许多优化机会。例如,Iterables.filter(Iterable,Predicate) 是否可以只返回带有 ALWAYS_TRUE 谓词的输入 Iterable(可能是不可修改的视图),以及带有 ALWAYS_FALSE 谓词的空 Iterable?
类似地,对于此类优化,包含 ALWAYS_FALSE 的 AndPredicate 可以被视为 ALWAYS_FALSE(以及带有 ALWAYS_TRUE 的 OrPredicate 等)
这种优化是否已经到位,我在随意搜索时错过了它,还是有原因(副作用行为改变?)为什么这不是一个好主意?