Kotlin中的Java Boolean.valueOf()等价物?

Kotlin中的Java Boolean.valueOf()等价物?,java,android,kotlin,boolean,Java,Android,Kotlin,Boolean,是否存在java的Boolean.valueOf()的Kotlin等价物?我找到的最接近的是.toBoolean() 但是,如果字符串为null,。toBoolean()将创建一个NPE 有人见过这个吗?我是否遗漏了一些理解?在调用之前,您应该知道它是否为null,因为您正在处理字符串或字符串。?是Kotlin用来指定可为空类型的后缀 如果您有一个字符串,那么您应该能够使用toBoolean() 如果您有一个字符串?-因此您可能有一个值,或者您可能有null-您可以使用空安全调用加上Elvis运

是否存在java的
Boolean.valueOf()
的Kotlin等价物?我找到的最接近的是
.toBoolean()

但是,如果字符串为null,
。toBoolean()
将创建一个NPE


有人见过这个吗?我是否遗漏了一些理解?

在调用之前,您应该知道它是否为
null
,因为您正在处理
字符串或
字符串。
<代码>?
是Kotlin用来指定可为空类型的后缀

如果您有一个
字符串
,那么您应该能够使用
toBoolean()

如果您有一个
字符串?
-因此您可能有一个值,或者您可能有
null
-您可以使用空安全调用加上Elvis运算符来指定如果
字符串?
null
,您需要的值:

val foo: String? = "true"
val bar: String? = null

println(foo?.toBoolean())
println(bar?.toBoolean() ?: false)
这张照片是:

true
false
bar?.toBoolean()
计算结果为
null
,而
null?:false
计算结果为
false
String.toBoolean

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

在Kotlin中,字符串从不为null,因此您不必检查它。这将返回一个布尔值(仅当字符串值为“true”时为true)

现在如果你有一根绳子?键入并想要一个布尔值

myString?.toBoolean() ?: false
如果你同意布尔值?返回的类型

myString?.toBoolean()

如前所述,它是
.toBoolean()

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

Kotlin基本上有两种类型:
Any
Any?
Any
当然可以是绝对的任何类,也可以指实际的类
Any

toBoolean
需要
字符串,这意味着非空字符串。这很基本:

val someString = "true"
val parsedBool = someString.toBoolean()
如果您有可为空的类型,它会变得稍微复杂一些。正如我提到的,
toBoolean
需要一个
String
字符串?
!=<在这些情况下,代码>字符串

因此,如果您有一个可为null的类型,那么可以使用safe call和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)

要防止NPE,请执行以下操作:
someString?.toBoolean()
。只有当
someString
可为空时才需要此选项。“如果字符串为空,toBoolean()将创建一个NPE”这不是您想要的吗?
/**
 * 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)