Lombok or data class ● JavaではLombokを使用していた ● Kotlinにはdata classという、自動でequals, hashCodeメソッドを作ってくれる機能がある data class User( val name: String, val sex: Sex, val age: Int, val prefectureCode: Int ) @Value @Builder @Wither public class User { @NonNull String name; @NonNull Sex sex; int age; int prefectureCode; }
Lombok or data class ● Kotlinでは、Builderパターンなどの代わりに名前付 き引数を用いる User.builder() .name("oboenikui") .sex(Sex.MAN) .age(25) .prefectureCode(12) .build(); val user = User( name = "oboenikui", sex = Sex.MAN, age = 25, prefectureCode = 12 )
Javaからdata classの呼び出し val user = User( name = "oboenikui", sex = Sex.MAN, age = 25, prefectureCode = 12 ) User user = new User( "Takaki Hoshikawa", Sex.MAN, 25, 12 ); 年齢? 県コード? ビルダーや名前付き引数の機能がないので コンストラクタなどに渡す変数がわかりにくい
data classとLombokの使用方針 ● 他のクラスより慎重にKotlin化する ○ 多くの箇所で生成するものは後回しにする ○ data class化したら、使っているクラスも合わせてKotlin 化 ○ 利用するwitherのみ定義する ○ JavaのUTで使う場合はコメントを入れる User testUser = new User( "Takaki Hoshikawa", // name Sex.MAN, // sex 25, // age 12 // prefectureCode );
data classとLombokの使用方針 ● Lombokを使うモジュールを隔離 / Delombok ○ マルチモジュール化でビルド速度改善も期待できる ○ Lombokクラスからはdata classを利用できない Delombok @Value @Builder @Wither public class User { @NonNull String name; @NonNull Sex sex; int age; int prefectureCode; } public class User { /* 略 */ public String getName() { return name; } /* 略 */ }