【发布时间】:2014-11-17 05:02:28
【问题描述】:
这是错误截图:
我正在使用 Intellij v14.0.1 + Kotlin 插件 v0.9.206。我的理解是,在空检查之后,编译器不应该向我显示错误。我错了吗?
【问题讨论】:
-
您的问题应该包含
person所代表的类的target成员的声明。声明改变了答案。尽管在属性上有自定义 getter 时,错误消息会有所不同。
这是错误截图:
我正在使用 Intellij v14.0.1 + Kotlin 插件 v0.9.206。我的理解是,在空检查之后,编译器不应该向我显示错误。我错了吗?
【问题讨论】:
person 所代表的类的target 成员的声明。声明改变了答案。尽管在属性上有自定义 getter 时,错误消息会有所不同。
target 属性是var,这就是为什么它不能保证在第三行这个属性不能为空(例如另一个线程可以将它设置为null)
【讨论】:
val,但有自定义的get() getter,那么它也不能与if 检查null 引起的智能转换一起使用。
AFAIK,一个属性可以是一个方法调用,然后什么都不能保证。使用本地val。
【讨论】:
if 检查 null 进行智能转换