我的应用程序中的所有活动都有一个基类。我希望变量activityClass
的类型为<? extends BaseActivity>
。这就是我在Kotlin中声明变量的方式:
var activityClass = MainActivity::class.java as Class<out BaseActivity>
问题是,在Android工作室中,我的部分“as Class<out BaseActivity>
”变灰,弹出消息显示:“不需要演员”
如果我遵循AS建议并删除了转换,当我尝试使用从BaseActivity派生的其他活动分配变量时,我会遇到编译器错误。以下代码:
activityClass = SpecificActivity::class.java
给我一个错误“类型推断失败。预期类型不匹配:必需Class<MainActivity>
,找到Class<SpecificActivity>
”。
这会导致问题,主要是因为我提交了代码更改,因为选中了AS提交向导中的“清理”和“优化导入”选项,这会删除“未使用”的代码(“作为类”部分),这实际上是实际使用过。 解决方法不是关闭这些选项,因为我实际上希望将它们设置为true。
如果我提交更改,请转到使用转换的类并撤消更改,它会询问“在提交之前撤消优化导入?”。如果我确认,我会退回,所以我知道这导致了问题。
PS:我使用的是Kotlin 1.0.5-3
答案 0 :(得分:3)
解决此问题的正确方法是指定变量类型:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
With Target
.Font.Bold = .Offset(, 1).Font.Bold
.NumberFormat = .Offset(, 1).NumberFormat
End With
End Sub