有Kotlin等效于Java的Boolean.valueOf()
吗?我找到的最接近的是.toBoolean()
。
但是,如果字符串为空,.toBoolean()
将创建一个NPE。
有人遇到过这个吗?我缺少一些了解吗?
最佳答案
如前所述,它是.toBoolean()
。
它的工作非常简单:如果String的值是true
,则忽略大小写,返回值是true
。在任何其他情况下,这都是错误的。这意味着,如果字符串不是 boolean 值,它将返回false。
Kotlin本质上具有两种类型的变体:Any
和Any?
。 Any
当然可以绝对是任何类,或者可以指代实际的类Any
。toBoolean
需要一个String
,这意味着一个非null的字符串。这很基本:
val someString = "true"
val parsedBool = someString.toBoolean()
如果您具有可为空的类型,它将变得稍微复杂一些。如前所述,toBoolean
需要一个String
。在这种情况下,为String?
!= String
。因此,如果您具有可为空的类型,则可以使用安全调用和elvis运算符
val someString: String? = TODO()
val parsedBool = someString?.toBoolean() ?: false
或者,如果您可以使用可为空的 boolean 值,则不需要elvis运算符。但是,如果String为null,则 boolean 值将为null。只是对上面的解释:
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)