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