尝试这样做:
var = obj?.Prop ?: obj.Prop.toLowerCase()
但我一直在接受:
java.lang.NullPointerException: Cannot get property 'Prop' on null object
这不是?
的用途吗?我的理解是obj?.Prop与:
if ( obj != null && obj.Prop ) { .. }
有时候obj为null,但是如果不是我想将obj.Prop设置为在null对象上设置为toLowerCase()的低级情况
答案 0 :(得分:3)
您需要执行obj?.Prop?.toLowerCase()
当?:
为空时,Elvis operato r(obj.Prop.toLowerCase()
)导致obj?.Prop
被评估。这相当于写作
var = (obj?.Prop != null) ? obj.Prop : obj.Prop.toLowerCase()
答案 1 :(得分:1)
?之后的表达式:是前面的表达式为null的情况的替代方法。如果您在替代中使用与前一部分中使用的相同的对象,那么您将触发一个npe
取而代之的是
obj?.Prop?.toLowerCase()