Я пытаюсь написать что-то вроде этого:
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
подстановочный знак.
См .: Разница в языковой ссылке.