javaClass
として定義KClass
のプロパティはインスタンス化オブジェクトのランタイムJavaクラスを返す拡張プロパティです。あなたのケースでは、あなたの拡張機能自体を表すKProperty1<Foo, Class<Foo>>
を与えるプロパティのリファレンスとして使用されている:
val T.javaClass: java.lang.Class<T>
あなたは、例えば、受信機との組み合わせで、これを使用することができますFoo
は、デフォルトコンストラクタを提供している場合、あなたは言うことができる:のように簡略化することができる
Foo::javaClass.get(Foo())
:直接"class references"で説明したように
Foo().javaClass
一方::class.java
を使用するには、あなたのJava Class<?>
を与えます。簡単な例ではすべての3つの可能性:
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