Kotlin的类

class Lizi {
var name: String = ""
var age: Int = 0
companion object {

}
}

对于 ​​Kotlin​​​ 的 ​​class​​ 要知道获取的到底是什么,可以利用 AS 的类型提示,一目了然(IDEA 类型查看快捷键 --> Ctrl + Q):

val lizi = Lizi()

val a = Lizi::class//KClass<Lizi>
val b = lizi::class//KClass<out Lizi>

val c = Lizi::class.java//Class<Lizi>
val d = lizi::class.java//Class<out Lizi>

val e = Lizi::javaClass//val e: KProperty1<Lizi, Class<Lizi>
val f = lizi::javaClass//val f: KProperty0<Class<Lizi>>

val g = Lizi.javaClass//val g: Class<Lizi.Companion>, 这里获取的是伴生类的class,属性都在原类
val h = lizi.javaClass//val h: Class<Lizi>//这里获取的是 Lizi 类的 class

val i = Lizi.javaClass.kotlin//val i: KClass<Lizi.Companion>
val j = lizi.javaClass.kotlin//val j: KClass<Lizi>

可以看到:

//获取 Java  的  Class  实例
class Hello //kotlin class

val clazz = Hello::class.java//第一种方式

val hello = Hello()
val clazz2 = hello.javaClass//第二种方式


//获取 Kotlin 的 Class 实例
val lizi = Lizi()
val j = lizi.javaClass.kotlin//val j: KClass<Lizi>