Приведение к классу продление класса - PullRequest
0 голосов
/ 16 июня 2019

Я пытаюсь получить класс по имени. Я знаю, что этот класс расширит мой класс Event. Для дальнейших общих вещей мне нужно, чтобы система знала, что класс является дочерним классом Event. С Java я, вероятно, приведу его к чему-то вроде Class<? extends Event>, но как мне это сделать с Kotlin? Мой текущий код:

Class.forName(eventClass) as Class<Event> // The as should cast to Class extending Event

Я пробовал такие вещи, как T: Event или?: Event

Ответы [ 2 ]

1 голос
/ 16 июня 2019

Котлинский эквивалент Class<? extends Event> равен Class<out Event>.

0 голосов
/ 16 июня 2019

Использование Класс будет работать нормально, если JVM является вашей целью, что демонстрирует следующий короткий пример:

open class Foo
class Bar: Foo()

fun main() {
    val c = Class.forName("fullpackagepath.Bar")
    println(c.superclass == Foo::class.java) // true
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...