是否存在零参数谓词?

gvl*_*sov 5 java java-8

是否有一个用作零参数的默认接口Predicate,它本质上是一个Supplier<Boolean>,它本质上是:

public interface Condition {
  boolean test();
}
Run Code Online (Sandbox Code Playgroud)

如果没有(我似乎找不到),那为什么会缺席呢?难道真的没有用吗?

Chr*_*rno 1

唯一有意义的“零”参数谓词是常量 (true|false)。由于根据定义,可能的实现集仅限于 2 个,为什么您要为 2 个恒定条件使接口复杂化(或梦想)?

想象一下这段代码的愚蠢之处:

if() {
   doFoo();
}
Run Code Online (Sandbox Code Playgroud)

如果是的话,那么 doFoo() ?!只能是真实的,或者可以删除代码。如果它是true常量,那么谓词就没有意义。

  • 谓词可能产生“真”,也可能产生“假”。你基于什么并不重要。结果域的基数大小为 2。我认为您希望将谓词基于谓词调用上下文之外的变量。你当然可以做到。 (2认同)