kotlin中获取class的这些方式有什么区别,比如::class、::class.java、::javaClass以及.javaClass等等。
::
是kotlin反射中常用的操作符,可以用于获取类的引用,函数的引用,属性的引用,更多内容查看官方文档。
::class
是用于取Kotlin类运行时的引用,返回的是KClass<T>对象。
::class.java
分为两部分,先是::class
获取Kotlin类运行时的引用,然后是.java
,这个是KClass<T>类型的一个扩展属性,用于获取当前KClass<T>对应的Class<T>对象。
.javaClass
是Any类型的扩展属性,用于获取当前类型的Class<T>对象。
::javaClass
是用于获取javaClass这个扩展属性的引用,返回的是KProperty<T>对象。
关于上面的提到的扩展属性javaClass和java,都可以在JvmClassMapping.kt中找到定义。在涉及到与Java互调,会常用到Class<T>,通过以下方式都能得到Class<T>对象。
内容