的javaClass
的KClass
一個屬性是返回運行Java類實例化對象的的擴展屬性。在你的情況下,它被用作屬性參考,它會給你一個KProperty1<Foo, Class<Foo>>
代表的擴展功能本身:
val T.javaClass: java.lang.Class<T>
你可以結合一個接收器,例如使用如果Foo
提供一個默認的構造函數,你可以說:
Foo::javaClass.get(Foo())
可以簡化爲:
Foo().javaClass
,另一方面利用::class.java
,使您的Java Class<?>
直接在"class references"描述。在一個簡單的例子,所有三種可能性:
val kProperty1: KProperty1<Foo, Class<Foo>> = Foo::javaClass
kProperty1.get(Foo()) //class de.swirtz.kotlin.misc.Foo
Foo::class.java //class de.swirtz.kotlin.misc.Foo
Foo().javaClass //class de.swirtz.kotlin.misc.Foo