投射到班级扩展班级

时间:2019-06-16 09:29:29

标签: kotlin

我正在尝试通过名称获取课程。我知道该课程将扩展我的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 个答案:

答案 0 :(得分:1)

Class<? extends Event>等效的Kotlin为Class<out Event>

答案 1 :(得分:0)

只要JVM是您的目标,使用Class就可以很好地工作,下面的简短示例演示了这一点:

open class Foo
class Bar: Foo()

fun main() {
    val c = Class.forName("fullpackagepath.Bar")
    println(c.superclass == Foo::class.java) // true
}