【发布时间】:2016-12-20 14:11:36
【问题描述】:
我的应用程序中的所有活动都有一个基类。我希望变量activityClass 的类型为<? extends BaseActivity>。这就是我在 Kotlin 中声明变量的方式:
var activityClass = MainActivity::class.java as Class<out BaseActivity>
问题在于,在 Android Studio 中,“as Class<out BaseActivity>”部分变灰,弹出消息显示:“无需演员表”
如果我遵循 AS 建议并删除了转换,当我尝试使用派生自 BaseActivity 的其他活动分配变量时会出现编译器错误。以下代码:
activityClass = SpecificActivity::class.java
给我一个错误“类型推断失败。预期类型不匹配:需要Class<MainActivity>,找到Class<SpecificActivity>”。
这主要是在我提交代码更改时导致问题,因为检查了 AS 提交向导中的选项“清理”和“优化导入”,这会删除“未使用”代码(“as Class”部分),这实际上是实际使用。 解决方案不是关闭这些选项,因为我实际上希望将它们设置为 true。
如果我提交更改,请转到使用强制转换的类并撤消更改,它会询问我“在提交之前撤消优化导入吗?”。如果我确认,我会恢复演员表,所以我知道这是导致问题的原因。
PS:我使用 Kotlin 1.0.5-3
【问题讨论】:
标签: android android-studio intellij-idea kotlin