当前位置: 首页 > 知识库问答 >
问题:

智能强制转换为“type”是不可能的,因为“variable”是一个可变属性,此时可能已被更改

郑俊弼
2023-03-14
var left: Node? = null
    
fun show() {
    if (left != null) {
        queue.add(left) // ERROR HERE
    }
}

我知道left是可变变量,但我显式检查了left!=null并且leftnode类型,那么为什么不能智能转换为该类型呢?

我怎样才能把它修好呢?

共有1个答案

元玮
2023-03-14

在执行left!=nullqueue.add(left)之间,另一个线程可能将left的值更改为null

要解决这个问题,您有几个选择。以下是一些:

>

  • 使用带有智能强制转换的局部变量:

     val node = left
     if (node != null) {
         queue.add(node)
     }
    
     left?.let { node -> queue.add(node) }
     left?.let { queue.add(it) }
     left?.let(queue::add)
    
     queue.add(left ?: return)
    

  •  类似资料: