【问题标题】:Smart cast to ‘CLASS!’ is impossible, because ‘VARIABLE’ is a mutable property that could have been changed by this time智能转换为“CLASS!”是不可能的,因为“VARIABLE”是一个可变属性,此时可能已更改
【发布时间】:2021-06-12 07:14:46
【问题描述】:

所以我最近开始学习 Kotlin,并且正在学习 Java 语言的 Android Studio 教程。我最终使用 Android Studio 将 Java 文件转换为 Kotlin。

Kotlin 代码片段:

编译错误:

我该如何解决这个错误?

【问题讨论】:

  • 请在问题本身中发布所有相关信息
  • 对不起!这是我的第一篇文章,我不知道图像会这样。下次我发布问题时我会记住它。
  • 发布代码或错误信息时,请勿发布图片。将错误的实际代码和文本发布为格式化文本
  • 请注意,您可以编辑帖子并将图像替换为代码。
  • 我还建议使用基于 Kotlin 的教程而不是基于 Java 的教程,因为这不是在 Kotlin 中通常编写此类代码的方式(即使它可以工作)。

标签: java android android-studio kotlin


【解决方案1】:

我建议您在帖子中发布代码。来到错误。让我们看看你的代码。像这样分配给 null 的各种属性。让我们考虑其中之一。

var splashImg: ImageView? = null

您得到的错误暗示由于这是一个可为空的属性,因此无法保证当您尝试访问它时它仍然是 ImageView 而不仅仅是 null.

答案很简单,就是为它们添加空检查。因为 kotlin 有一个名为 ?.

的安全调用运算符

因此,当您尝试访问该属性时,请按如下方式访问它。这确保它只有在它不为空时才会访问它。也可以放个普通的if-else

splashImg?.animate()...

【讨论】:

    猜你喜欢
    • 2018-07-07
    • 2017-11-19
    • 2018-03-23
    • 2021-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    相关资源
    最近更新 更多