Groovy的boolean值

Groovy boolean值

Groovy与Java 的boolean值有着本质的区别. 根据不同的情况, Groovy 会自动将表达式的值 作为boolean看待. 让我们来看看具体的实例. 下面的Java代码不能正常运行:

//Java code 
String obj = "hello" ; 
int val = 4; 
if (obj) {} // ERROR 
if(val) {} //ERROR

Java 必须要你在if条件语句中提供一个boolean表达式值. 上面的代码必须改成 if(obj != null) 和 if(val > 0) 才能正常运行. Groovy 就不会那么挑剔了. 如果你把一个对象放在一个boolean表达式中,Groovy 会检查这个对象是否为null. 它会把null当做false,否则为true, 就像下面的代码:

str = 'hello' 
if (str) { 
    println 'hello' 
} 

输出为:hello

上面是相对于单个对象,那么对于集合(比如java.util.ArrayList)这样的类型,它会怎么判断 了.Groovy 会检查集合是否为空来判断,因此,像if (obj)为 true 的条件只在obj 不为null 且集 合必须拥有至少一个元素:

lst0 = null 
println lst0 ? 'lst0 true' : 'lst0 false' 
lst1 = [1, 2, 3] 
println lst1 ? 'lst1 true' : 'lst1 false' 
lst2 = [] 
println lst2 ? 'lst2 true' : 'lst2 false'

Groovy的boolean值_第1张图片

上面的代码输出:
lst0 false
lst1 true
lst2 false

你可能感兴趣的:(Groovy)