Kotlin – 可能会错误地报告一个未使用的代码

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

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

问题是,在Android工作室我得到的部分“ as Class<out BaseActivity> ”变灰,弹出消息说:“不需要as Class<out BaseActivity>

如果我按照AS的建议,我删除了转换,当我尝试使用从BaseActivity派生的其他活动分配变量时,我得到编译器错误。 以下代码:

 activityClass = SpecificActivity::class.java 

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

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

如果我提交了更改,请转到使用该投射的类并撤销更改,它会要求我“在提交之前撤消优化导入?”。 如果我确认了,我会得到这个投射,所以我知道这是造成这个问题的原因。

PS:我使用Kotlin 1.0.5-3

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

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