02-类引用
10.1.1 类引用
反射的一个基本功能就是在运行时获取Kotlin类的引用,要获取已知静态Kotlin类的引用,可以使用类字面值(class literal)语法。代码如下。
val c = MyClass::class
上面实例中的类引用的是KClass类型的值,Kotlin的类引用和Java的类引用不同,要获得Java的类引用,可以使用KClass实例的Java属性。
val c = MyClass::class.java
自1.1版本开始,Kotlin还允许将对象作为接收者,通过类似于类字面值的语法来获取指定对象的类引用。
val widget: Widget = …
assert(widget is GoodWidget) { "Bad widget: ${widget::class.qualifiedName}" }
虽然定义的接收者表达式的类型为Widget,但是仍然可使用确切的对象类引用,如GoodWidget或BadWidget。