1. hibinohirokatsu

    Posted

    hibinohirokatsu
Changes in title
+javaからkotlin変換の色々メモ
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,43 @@
+サーバーサイドのjavaアプリケーションを半年近くちまちまとkotlinに変換しています。多少はコツも掴めてきたので、メモ。
+
+## Intellij IDEAを使う
+
+kotlinなんだから当然ですね。
+
+## 自動変換
+
+IDEAには、Javaコードをkotlinに自動変換する機能があるので、基本的にはそれを呼び出すだけです。ただし、自動変換できない・失敗するケースがいくつかあります。
+
+### その1:lombok
+
+lombokは素敵なものですが、kotlinとの相性は悪いです。@Data,@Setterアノテーションなどlombokでコード生成しているjavaコードをkotlinから呼び出すことはできません。javaコードの修正が必要となります。IDEAの場合、"delombok"でlombokで生成されているコードをソースに展開してくれます。ちなみに、lombok使用のままでもIDE上では即時にはエラーにはならずに、ビルド時に失敗するので、最初はかなり悩みました。
+
+### その2:stream
+
+streamで少し複雑な処理を記述しているとだいたい失敗します。手作業でちまちまと直します。コードがすごくすっきりして嬉しかったりする。
+
+## kotlinコードをjavaから呼び出す:static
+
+kotlinには、javaのstaticメソッドが存在しません。companion object内のメソッドがそれに対応します。@JvmStatic アノテーションを付けることで、javaコードからstaticメソッドのように呼び出すことができます。
+
+```kotlin
+ companion object {
+ @JvmStatic
+ fun valueOf(value: Int?): Int {
+```
+
+## kotlinコードをjavaから呼び出す:例外
+
+javaからkotlinを呼び出す場合で、送出する例外を明示する場合は、@throwsアノテーションを使います。
+
+```kotlin
+@Throws(SQLException::class, IOException::class)
+fun func() {
+}
+```
+
+## @Nonnull / @Nullableアノテーションを使う。
+
+全てのコードがkotlinであればいいのですが、そうはいかないことが多いと思います。javaのコードには @Nonnull/@Nullable アノテーションでnull可能性を明示することで、呼び出すkotlin側で意図しないnull例外の発生を防ぐことができますし、コンパイルエラーで弾いてくれます。
+
+とりあえずここまで。