if式でのBoolean?の使用 質問する

if式でのBoolean?の使用 質問する

nullable がある場合Boolean b、Java で次の比較を行うことができます。

Boolean b = ...;
if (b != null && b) {
   /* Do something */
} else {
   /* Do something else */
}

Kotlin では、演算子を使用して同じことを実現できます!!

val b: Boolean? = ...
if (b != null && b!!) {
   /* Do something */
} else {
   /* Do something else */
}

しかし、 の使用は!!ヌルセーフティシステムを回避しているため、少し怪しい気がします。

これに対するよりエレガントなアプローチはありますか?


編集少し単純化しすぎたようです。ローカル変数の場合、バンタール示されているように、それは機能します。ただし、私のブール値はb実際には「バッキング フィールドを持つプロパティ」です (これが何を強制するかについてはまだよくわかっていません)。結果は次のとおりです。

ここに画像の説明を入力してください

ベストアンサー1

等価演算子を使用して、 null 許容ブール値をtruefalseまたは と比較できます。null

var b: Boolean? = null
if (b == true) {
    // b is not null and equals true
} 
if (b == false) {
    // b is not null and equals false 
}
if (b != true) { 
    // b is null or equals false 
}

おすすめ記事