Какой синтаксис для класса<? расширяет имя_класса> в котлин?
Я пытаюсь создать Arraylist, который принимает любую переменную класса, унаследованную от Word_Class, но она не работает:
var lst = ArrayList<Class<Word_Class>>();
lst.add(Class<Noun_Class>);
Я ищу синтаксис для класса расширяет имя_класса> в котлине
1 ответ
Вы можете использовать проекцию out type в Kotlin. это эквивалентно ? extends T
в Java, например:
// v--- out type projection
var lst = ArrayList<Class<out Word_Class>>()
Чтобы получить класс Java, вы должны использовать KClass#java
, например:
// v--- get a KClass instance
lst.add(Noun_Class::class.java)
// ^--- get java.lang.Class instance