Die javaClass
definiert ist, ist eine Erweiterung Eigenschaft, die die Runtime-Java-Klasse eines instanziiert Objekt zurückgibt. In Ihrem Fall wird es als Eigenschaft Referenz verwendet, die Ihnen ein KProperty1<Foo, Class<Foo>>
repräsentieren die Erweiterungsfunktion selbst geben:
val T.javaClass: java.lang.Class<T>
Man könnte dies mit einem Empfänger in Kombination verwendet werden, zum Beispiel wenn Foo
einen Standardkonstruktor bereitgestellt könnte man sagen:
Foo::javaClass.get(Foo())
, die vereinfacht werden kann:
Foo().javaClass
Mit ::class.java
auf der anderen Seite, gibt Ihnen die Java Class<?>
wie in "class references" direkt beschrieben. Alle drei Möglichkeiten in einem einfachen Beispiel:
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