集合和映射布尔值评估

如果不为 null 且不为空,则集合和映射的计算结果为 true,如果为 null 或为空,则计算结果为 false

/* an empty map example*/
def userInfo = [:]
if (!userInfo)
    userInfo << ['user': 'Groot', 'species' : 'unknown' ]

user: 'Groot' , species : 'unknown'添加为默认 userInfo,因为 userInfo 地图为空(请注意,这里的地图不为空)

对于 null 对象,代码略有不同,我们不能在 userInfo 上调用<<因为它为 null,我们必须进行赋值(也可以参考 Object boolean evaluation):

/* an example with a null object (def does not implies Map type) */
def userInfo = null
if (!userInfo)
    userInfo = ['user': 'Groot', 'species' : 'unknown' ]

并使用空地图:

/* The same example with a null Map */
Map<String,String> userInfo = null
if (!userInfo)
    userInfo = ['user': 'Groot', 'species' : 'unknown' ]