【发布时间】:2019-04-15 21:53:03
【问题描述】:
我最近开始学习 Kotlin。我无法理解的一件事是空检查块。下面的语句被认为是不安全的,编译器不允许你编译它。
var testVar: String? = null;
// if (testVar != null )
{
// Doing some work....
println(testVar.length)
}
但是,当您取消注释 if 行时,一切正常。这似乎很棒。
但是如果 // Doing some work.... 的计算量很大并且另一个线程将 testVar 的值更改为 null 而该线程位于 // Doing some work 行中怎么办?在这种情况下:
- 程序是否抛出 NullPointerException?
- 或者:
- 字节码是否缓存了 testVar 的值并在 if 块中使用缓存的值?
【问题讨论】:
标签: kotlin