自作ライブラリ、KMapper/KRowMapperの機能紹介です。
- Kotlin向けModelMapper的なライブラリ、KMapperを作った - Qiita
- Kotlin向け高機能RowMapper、KRowMapperを作った - Qiita
- ProjectMapK
バージョンはKMapper 0.17/KRowMapper 0.4で書いています。
null入力を飛ばしてマッピングを行う
ProjectMapKで作成しているマッピングライブラリでは、null不許可の引数に対しても、渡された値がnullであればnullを渡しています1。
一方、場合によっては複数入力の内nullでないもの、あるいはデフォルト値を用いたいという場合も有ります。
そのような場合、以下のようにKParameterRequireNonNullアノテーションをパラメータに付与することで、null入力を無視したマッピングが行えます。
data class Dst(val fooId: Int, @KParameterRequireNonNull val barStr: String = "default value")
data class Src(val fooId: Int, val barStr: String?)
val src = Src(1, null)
val dst = KMapper(::Dst).map(src)
println(dst) // -> default value
-
これはライブラリが極力黒魔術的な挙動にならないよう、「先に入力された引数が正」という方針を取っているためです。 ↩