时髦的空安全操作员不工作



尝试这样做:

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

但我不断得到:

java.lang.NullPointerException: Cannot get property 'Prop' on null object

这不就是?的目的吗?我的理解是obj?。道具与以下相同:

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

有时 obj 为空,但如果不是,我想设置 obj。Prop 为小写 - 不能在空对象上设置为小写((

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

猫王运算符(?:(导致obj.Prop.toLowerCase()obj?.Prop为空时被计算。相当于写作

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

?: 后面的表达式是前面表达式为 null 的情况的替代表达式。如果在替代项中使用与上一部分相同的对象,则将触发 npe

而是做

obj?.Prop?.toLowerCase()

最新更新