为了账号安全,请及时绑定邮箱和手机立即绑定

Java Boolean.valueOf() 在 Kotlin 中等效吗?

Java Boolean.valueOf() 在 Kotlin 中等效吗?

慕侠2389804 2021-07-09 14:14:10
是否有相当于Boolean.valueOf()Java的 Kotlin ?我找到的最接近的是.toBoolean().但是如果字符串为 null.toBoolean()将创建一个 NPE。有没有人遇到过这个?我错过了一些理解吗?
查看完整描述

3 回答

?
月关宝盒

TA贡献1772条经验 获得超5个赞

如前所述,它是.toBoolean()。


它的工作原理非常简单:如果 String 的值为true,则忽略大小写,返回值为true。在任何其他情况下,它都是错误的。这意味着,如果字符串不是布尔值,它将返回 false。


Kotlin 本质上有两种类型的变体:Any和Any?. Any当然可以绝对是任何类,或者指实际的类Any。


toBoolean需要 a String,这意味着一个非空字符串。这是非常基本的:


val someString = "true"

val parsedBool = someString.toBoolean()

如果您有可空类型,它会稍微复杂一些。正如我提到的,toBoolean需要一个String. A String?!=String在这些情况下。


因此,如果您有一个可为空类型,则可以使用安全调用和 elvis 运算符


val someString: String? = TODO()

val parsedBool = someString?.toBoolean() ?: false

或者,如果您可以使用可为空的布尔值,则不需要 elvis 运算符。但是如果字符串为空,那么布尔值也是。


只是对上面的解释:


someString?.//If something != null

    toBoolean() // Call toBoolean

    ?: false // Else, use false

此外,您无法编译使用toBoolean可空引用的程序。编译器会阻止它。


最后,作为参考,方法声明:


/**

 * Returns `true` if the contents of this string is equal to the word "true", ignoring case, and `false` otherwise.

 */

@kotlin.internal.InlineOnly

public actual inline fun String.toBoolean(): Boolean = java.lang.Boolean.parseBoolean(this)


查看完整回答
反对 回复 2021-07-14
?
慕桂英3389331

TA贡献2036条经验 获得超8个赞

字符串到布尔值

如果此字符串的内容等于单词“true”,则返回 true,忽略大小写,否则返回 false。

在 Kotlin 中,字符串永远不会为空,因此您不必检查它。这将返回一个布尔值(仅当字符串值为“真”时才为真)

myString.toBoolean()

现在如果你有一个字符串?输入并想要一个布尔值

myString?.toBoolean() ?: false

如果你对布尔值没意见?类型返回

myString?.toBoolean()


查看完整回答
反对 回复 2021-07-14
?
皈依舞

TA贡献1851条经验 获得超3个赞

您应该知道它是否null在调用之前,因为您正在处理 aString或 a String?。?是 Kotlin 用来指定可为空类型的后缀。


如果您有String,那么您应该可以使用toBoolean().


如果你有一个String?- 所以你可能有一个值,或者你可能有null- 你可以使用空安全调用加上 Elvis 运算符来指定你想要的值,如果String?是null:


val foo: String? = "true"

val bar: String? = null


println(foo?.toBoolean())

println(bar?.toBoolean() ?: false)

这打印:


true

false

bar?.toBoolean()计算为null,并null ?: false计算为false。


查看完整回答
反对 回复 2021-07-14
  • 3 回答
  • 0 关注
  • 240 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信