Как выразить `Class <? extends 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>) 

Это дает мне предупреждение «непроверенного броска». Это лучшее, что я могу сделать? Как это сделать чисто?

Solutions Collecting From Web of "Как выразить `Class <? extends Any>"

Используйте out -projection: ArrayList<Class<out Any>> , это в основном эквивалентно Java ? extends ? extends подстановочный знак.

См .: Разница в языковой ссылке.