android - Kotlin - 可能错误地报告未使用的代码

标签 android android-studio intellij-idea kotlin

我的应用程序中的所有 Activity 都有一个基类。我想要一个变量 activityClass类型为 <? extends BaseActivity> .这就是我在 Kotlin 中声明变量的方式:

 var activityClass = MainActivity::class.java as Class<out BaseActivity>

问题是在 Android studio 中我得到“as Class<out BaseActivity>”部分变灰并且弹出消息说:“不需要转换”

如果我遵循 AS 建议并删除转换,当我尝试使用从 BaseActivity 派生的其他 Activity 分配变量时,我会遇到编译器错误。以下代码:

activityClass = SpecificActivity::class.java

给我一​​个错误“类型推断失败。预期类型不匹配:需要 Class<MainActivity>,找到 Class<SpecificActivity>”。

这主要在我提交代码更改时引起问题,因为选中了 AS 提交向导中的选项“清理”和“优化导入”,这会删除“未使用”代码(“类”部分),这实际上是实际使用。 解决方案是不要关闭这些选项,因为我实际上希望将它们设置为 true。

如果我提交更改,转到使用转换的类并撤消更改,它会询问我“在提交前撤消优化导入?”。如果我确认,我会收回铸件,所以我知道这是导致问题的原因。

PS:我使用的是 Kotlin 1.0.5-3

最佳答案

解决这个问题的正确方法是指定变量类型:

var activityClass: Class<out BaseActivity> = MainActivity::class.java

关于android - Kotlin - 可能错误地报告未使用的代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41244308/

相关文章:

scala - 如何将 build.gradle 导入 IntelliJ

Android getFromLocationName 返回边界框外的结果

android - 设备文件资源管理器中的数据库文件夹为空 - ROOM 数据库

android - Gradle 高级构建插件 : Cannot invoke canRead()?

java - 如何使用 GUI intelliJ 显示框架

scala - IntelliJ 似乎没有选择某些 sbt 库,没有代码完成

android - SmsReceiver 适用于 API 21 及更早版本,但不适用于 API 26

android - ActionBar 选项卡根据屏幕宽度设置动态宽度

android - 我如何告诉 gradle 使用最新的库、快照或不使用?

android - 如何在 Android Studio 中查看 xml 的预览