記事内容はタイトル通りです。
こうなる原理は以下の記事をご参照ください。
概要
メソッドにAssertTrue
を付けた場合、バリデーションできる/できないは以下のようになります。
// バリデーションできる
@AssertTrue
fun getHoge(): Boolean? = false
// バリデーションできない
@AssertTrue
fun isHoge(): Boolean? = false
// バリデーションできる
@AssertTrue
fun isFuga(): Boolean = false
原因
以下は上記コードのデコンパイル結果です。
Kotlin
はBoolean?
型をjava.lang.Boolean
にコンパイルします。
そして、冒頭に貼り付けた記事の通り、java.lang.Boolean
はオブジェクトなので、BeanValidation
はis~
から始まるメソッドを無視してしまうため、バリデーションは機能しません。
@AssertTrue
@Nullable
public final Boolean getHoge() {
return false;
}
@AssertTrue
@Nullable
public final Boolean isHoge() {
return false;
}
@AssertTrue
public final boolean isFuga() {
return false;
}