如何表达`Class <! - ?扩展Any - >`

时间:2017-11-03 19:08:35

标签: kotlin

我试图写这样的东西:

var classList = ArrayList<Class<Any>>()
init {
    classList.add(ClassA::class.java)
    classList.add(ClassB::class.java)
}

这给我带来了错误:

Type inference failed. Expected type mismatch: inferred type is Class<ClassA> but Class<Any> was expected

我可以通过做一个明确的演员来摆脱错误:

domainClasses.add(NameIdMapping::class.java as Class<Any>)

这让我成为一名未经检查的演员&#34;警告。这是我能做的最好的吗?如何干净利落地做到这一点?

1 个答案:

答案 0 :(得分:9)

使用<> - 投影:out,这大致等同于Java ArrayList<Class<out Any>>通配符。

请参阅语言参考中的Variance