如何在Kotlin中检查可为空的布尔值

How to check a nullable boolean in kotlin

如果我想检查可为空的Boolean,我会得到一个type mismatch

1
2
3
4
5
6
var bool: Boolean? = true

if(bool)
  println("foo")
else
  println("bar")

因为Boolean is expected不是Boolean?


如果要与truefalse区别对待null大小写:

1
2
3
4
5
when(bool) {
    null -> println("null")
    true -> println("foo")
    false -> println("bar")
}

使用Boolean.equals()

1
2
3
4
5
6
var bool: Boolean? = null

if(true.equals(bool))
  println("foo")
else
  println("bar")

甚至可以内联进行

1
2
3
4
5
6
var bool: Boolean? = null

if(true == bool)
  println("foo")
else
  println("bar")

或使用Elvis可为空的布尔值检查

1
2
3
4
5
6
var bool: Boolean? = null

if(bool ?: false)
  println("foo")
else
  println("bar")


当您有可为空的类型时,我的建议是:

如果您将nullable设置为某种原因,则意味着该变量可以为null,因此在执行任何操作之前,您必须检查其是否不为null。

1
2
3
4
5
6
7
8
9
10
11
 val bool: Boolean? = null

     if(bool != null) {
         if(bool){
             println("foo")
         } else {
             println("foo")
         }
    } else {
    println("variable non instancied yet")
   }