KotlinにおけるJavaのクラスオブジェクト参照方法

Kotlin実装中Javaライブラリ(Doma2)を利用しているときに、JavaにおけるFoo.class(Javaのクラスオブジェクト)を指定したい場面がありました。

結論

以下の記法でJavaのFoo.classオブジェクトを取得できます。

Foo::class.java

利用例

Doma2(クエリビルダ利用時)においてSQL発行時の利用例は以下になります。

val builder = SelectBuilder.newInstance(config)
builder.apply {
   sql("select")
   sql("*")
   sql("from")
   sql("foo")
}
// リフレクションを利用してJavaクラスオブジェクトを取得
builder.getEntityResultList(Foo::class.java)

補足

Kotlinではリフレクションを::という記法で実現できます。
::classでKClass型のインスタンスを取得し、.javaでJavaのクラスオブジェクトを取得しています。

ちなみに、このKClass型ではクラスオブジェクト以外にも様々な情報が取得でき、例えば.membersPropertiesではそのオブジェクトのプロパティ自体のリストが取得できます。(変数名をStringで取得できる)

Kotlin公式リファレンスの以下ページにリフレクションやJavaとの相互運用に関しての記載があるので、そちらも参考にしてください。

https://kotlinlang.org/docs/reference/reflection.html#reflection

https://kotlinlang.org/docs/reference/java-interop.html#java-reflection


--------------------------
システム開発のご要望・ご相談はこちらから

コメントを残す

メールアドレスが公開されることはありません。