Groovy 真相(真实的)
Groovy 以与 Java 对标准 Java 条件相同的方式评估 if , while 和 for 语句中的条件 :在 Java 中,你必须提供一个布尔表达式(一个求值为布尔值的表达式),结果是评估的结果。
在 Groovy 中,结果与 Java 中的结果相同(没有提供示例,这是标准 Java)。
示例中显示的其他真实性评估机制可归纳为:
- 数字:零值评估为 false,非零值为 true。
- 对象:空对象引用的计算结果为 false,非空引用为 true。
- 字符:具有零值的字符的计算结果为 false,否则为 true。
- String:如果不为 null 且不为空,则字符串求值为 true;如果为 null 或为空则为 false(也适用于 GStrings 和 CharSequences)。
- 集合和映射(包括子类 List , Map , Set , HashSet ……):还考虑了大小,如果集合不为 null 且不为空,则求值为 true;如果为 null 或为空,则求值为 false。
- Enumerations 和 Iterators 如果不为 null 则求值为 true,并且它们是更多元素(groovy 求值对象上的 hasMoreElements 或 hasNext ),如果为 null 或不再有元素,则为 false。
- 匹配器:匹配器如果至少有一个匹配则求值为 true,如果找不匹配则判断为 false。
- 闭包:闭包评估闭包返回的结果的评估。
可以在用户定义的类中覆盖 asBoolean 方法以提供自定义布尔值评估。