🐤
【Kotlin】::class と ::class.java の違いについて
::classと::class.javaの違いについて気になったので、簡単ですが調べてみました。
::class
- Kotlin のクラスの KClass を取得することが出来る
-
KClassは、クラスを表し、イントロスペクション[1]機能を提供する - Kotlin クラスの参照と Java クラスの参照は異なるので、
Classの参照を取得するときは、::class.javaを使用する。
::class.java
- Java クラスの
Classを取得する - 指定された
KClassのインスタンスに対応する Java クラスを取得する
JvmClassMapping.kt
/**
* Returns a Java [Class] instance corresponding to the given [KClass] instance.
*/
@Suppress("UPPER_BOUND_VIOLATED")
public val <T> KClass<T>.java: Class<T>
@JvmName("getJavaClass")
get() = (this as ClassBasedDeclarationContainer).jClass as Class<T>
参考
-
実行時にオブジェクトの情報を参照して、その情報にさらに変更を加える方法。 ↩︎
Discussion