【问题标题】:Kotlin 'unsafe call on nullable receiver' compile error after null check空检查后Kotlin'对可空接收器的不安全调用'编译错误
【发布时间】:2014-11-17 05:02:28
【问题描述】:

这是错误截图:

我正在使用 Intellij v14.0.1 + Kotlin 插件 v0.9.206。我的理解是,在空检查之后,编译器不应该向我显示错误。我错了吗?

【问题讨论】:

  • 您的问题应该包含person 所代表的类的target 成员的声明。声明改变了答案。尽管在属性上有自定义 getter 时,错误消息会有所不同。

标签: kotlin kotlin-null-safety


【解决方案1】:

target 属性是var,这就是为什么它不能保证在第三行这个属性不能为空(例如另一个线程可以将它设置为null

【讨论】:

  • 还要注意,如果属性是val,但有自定义的get() getter,那么它也不能与if 检查null 引起的智能转换一起使用。
【解决方案2】:

AFAIK,一个属性可以是一个方法调用,然后什么都不能保证。使用本地val

【讨论】:

  • 感谢您的回答!这两个答案都很棒,现在对我来说更有意义。但是,我不确定哪个答案“更正确”,所以我选择了较早的答案。对不起
  • @user3097196 我很好。提示:你可以投票给另一个。开个玩笑(我猜是你做的)。
  • 这并不总是正确的。没有自定义 getter 的属性仍然可以通过 if 检查 null 进行智能转换
猜你喜欢
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
  • 1970-01-01
  • 1970-01-01
  • 2018-04-11
相关资源
最近更新 更多