我的应用程序中的所有 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/