如何表达`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通配符。

请参阅:语言参考中的差异 。