1. ホーム
  2. kotlin

[解決済み] if式でのBoolean?の使用

2022-04-28 08:19:32

質問

もし、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 */
}

しかし !! は、NULL安全システムを回避しているようで、少し大雑把な感じがします。

もっとエレガントな方法はないのでしょうか?


編集 ちょっと簡略化しすぎたようです。ローカル変数については バンサー が示すように、動作します。しかし、私のブーリアン b は、実際には "バッキングフィールドを持つプロパティ"です(私はこれが何を課すかについてまだ本当にスピードアップしていません)。これがその結果です。

解決方法は?

nullable booleanの比較は true , false または null 等号演算子を使っています。

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