環境: Kotlin 1.0.0-beta-4584, Orma v0.22.0, JDK 1.8.0_66
Kotlin*1自体はJava Annotation Processingにも対応しているので、JavaからKotlinのコードを呼べるようにするだけでよかった。
Ormaは生成したコードからモデルであるクラスを参照するので、JavaからKotlinを特別に工夫することなく呼び出せるようにする必要がある。
具体的には、KotlinのプロパティはJavaからみるとプライベートフィールドとgetter / setterメソッドの組み合わせになるので、Ormaの @Column
フィールドを定義したときに常に対応するgetter / setterがあるかどうかを検索して、それらしきものがあればそれを使う、というようにすればよい。これはv0.22.0より前は該当のメソッドに @Getter
と @Setter
で注釈する必要があった。
Guess getters and setters by gfx · Pull Request #106 · gfx/Android-Orma · GitHub
この修正だけでKotlinから使うことができた。
[WIP] add Kotlin example by gfx · Pull Request #107 · gfx/Android-Orma · GitHub
ただし、kapt自体はまだ不安定で、ビルドは通ったり通らなかったりするし、 kapt project(':processor')
も動かない。サンプルをマージするのはまだ先のことになるだろう。
*1:JetBrains社の開発するJVM言語で、最近Javaの代替として注目されつつある。