我读过使用“!!”而不是“?。“在kotlin中不推荐。检查变量中的null时,2有什么区别?
不,两者是不同的。
!!
运算符在kotlin中称为双爆炸运算符
。这意味着您的字段不可为空。当特定的可为空字段为空时,它会抛出NullPointerException。
var s :String? = null
var b :String = s!!.lowerCase() // It will throw null pointer exception as you are asserting nullable variable as non null
是<code>空安全调用运算符用于对特定字段进行空安全访问。
var s :String? = null
var b :String? = s?.lowerCase() //Here lowerCase will not execute because you are making safe call only if value is not null.
var s :String? = null
var b :String = b?.lowerCase() ?: ""
额外的事情,如果你需要b为非空在Safecall运算符,你可以使用?:(elvis)
运算符有默认值,如果以前的安全调用语句为空。
"?."和"!!"是不同的. "?." 操作符也称为安全调用操作符,用于从可空对象安全地访问属性
请参阅此链接
鉴于"!!"称为非空断言运算符,它强制将可空类型表示为非空。使用此运算符而不检查null将导致NullPointerException。
请参阅此链接
!!
-是开发人员告诉编译器的方式,相信我,我知道这个值不会为空。这是一种将可空值转换为不可空类型的不安全方式。不安全意味着如果值确实为空,它可以抛出NullPointerException
。
您可以在此处阅读更多相关信息。
?。
-是开发人员告诉编译器的方式,在值不为空的情况下,其余的逻辑是否遵循?。符号。这种方式是访问可空类型的安全方式。
您可以在此处阅读更多相关信息
在下面的代码中。我在Intellij idea编译器中发现val a和val b默认为"val a: StringBuilder" 这两者的区别是什么?和
如何在使用Kotlin的Spring Boot中正确初始化ConfigurationProperties? 目前我喜欢下面的例子: 但是它看起来很丑陋,实际上不是一个iable,foo是常量ue,应该在启动期间初始化,将来不会改变。
我正在维护一个用静态编程语言和Spring Boot编写的微服务系统,在一些代码中,我发现!!语法,我不知道它的意思: 状态是上述函数的响应。有人可以向我解释一下吗!意思是,它在这种情况下有什么用?提前致谢!!!
我想说明的一点是 安全//从NPE保存,但它可以抛出 最优性 当不需要可变属性时,选择不是更好吗?