Javax validation with Kotlin
必須項目のバリデーション
Kotlinでは@NotNull
をNonNullableな型に対して使えない。
バリデーションは一度変数に代入し終わってから動くため、NonNullabe型にnullを代入するとバリデーションが働く前にNullPoが発生してしまうからである。
回避策は、コンストラクタ引数はNullableにした上で、バリデーション後にNonNullableなメンバへ代入する。
import javax.validation.constraints.NotNull
class Hoge(
// 必須のメンバ引数
id: Int?,
// 任意のメンバ
val name: String?
) {
// バリデーション用のメンバ。初期値としてコンストラクタ引数のidを代入する。
// そして、値取得時にNotNullでバリデーションする。
private val _id_: Int? = id
@NotNull get() = field
// 外から見えるのはこのメンバ
val id: Int by lazy { _id!! }
}
← Flutter React: Next →