如何表达`Class <? 扩展Any>`
我试图写这样的东西:
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>)
这让我一个“不加控制”的警告。 这是我能做的最好的吗? 如何干净地做这个?
使用out
-projection: ArrayList<Class<out Any>>
,这大部分等同于Java ? extends
? extends
通配符。
请参阅:语言参考中的差异 。