groovy空安全运算符不工作

groovy空安全运算符不工作,groovy,Groovy,尝试这样做: var = obj?.Prop ?: obj.Prop.toLowerCase() 但我一直得到: java.lang.NullPointerException: Cannot get property 'Prop' on null object 这不是什么吗?是为了什么?我的理解是obj?。道具与: if ( obj != null && obj.Prop ) { .. } 有时obj为null,但如果不是,我想将obj.Prop设置为小写-不能在null对

尝试这样做:

var = obj?.Prop ?: obj.Prop.toLowerCase()
但我一直得到:

java.lang.NullPointerException: Cannot get property 'Prop' on null object
这不是什么吗?是为了什么?我的理解是obj?。道具与:

if ( obj != null && obj.Prop ) { .. }

有时obj为null,但如果不是,我想将obj.Prop设置为小写-不能在null对象上设置为小写

前面表达式为null的情况下,以下表达式是可选的。如果您在备选方案中使用与前一部分相同的对象,则将触发npe

取而代之的是

obj?.Prop?.toLowerCase()

在前面的表达式为null的情况下,以下表达式是可选的。如果您在备选方案中使用与前一部分相同的对象,则将触发npe

取而代之的是

obj?.Prop?.toLowerCase()
你需要做obj?.Prop?.toLowerCase

当obj?.Prop为空时,r?:导致计算obj.Prop.toLowerCase。这相当于写作

var = (obj?.Prop != null) ? obj.Prop : obj.Prop.toLowerCase()
你需要做obj?.Prop?.toLowerCase

当obj?.Prop为空时,r?:导致计算obj.Prop.toLowerCase。这相当于写作

var = (obj?.Prop != null) ? obj.Prop : obj.Prop.toLowerCase()