2.6 布尔求值

  1. Groovy 中的布尔求值与 Java 中不同。在 Java 中,if 语句的条件部分必须是一个布尔表达式,比如 if(obj == null)if(a > 0)等这样的形式。Groovy 中没有这么挑剔。它会尝试推断,所以需要知道它的推断原理。

  2. 如果在需要布尔值的地方放了一个对象引用,Groovy 会检查该引用是否为 null。它将 null 视作 false。 如果对应引用不为 null,表达式的结果还与对象的类型有关。比如,如果对象是一个集合,那么 Groovy 会检查该集合是否为空。只有当集合不空时才是 true。

  3. Groovy 中类型与布尔值推断逻辑

  类型                 为真的条件
Boolean                 值为true
Collection              集合不为空
Character               值不为0
CharSequence            长度大于0
Enumeration             Has More Elements() 为 true
Iterator                hasNext() 为 true
Number                  Double 值不为0
Map                     该映射不为空
Matcher                 至少有一个匹配
Object[]                长度大于0
其他类型                引用不为 null
  1. 除了使用 Groovy 内置的布尔求值约定,在自己的类中,还可以通过实现 asBoolean() 方法来编写自己的布尔转换。

你可能感兴趣的:(2.6 布尔求值)