Aja*_*ngh 5 java android kotlin
有Kotlin等效于Java的Boolean.valueOf()吗?我找到的最接近的是.toBoolean()但如果字符串为null .toBoolean()将创建一个NPE。
有人遇到过这个吗?我缺少了解吗?
如前所述,它是.toBoolean()。
它的工作原理非常简单:如果String的值为true,则忽略大小写,返回值为true。在任何其他情况下,这都是错误的。这意味着,如果字符串不是布尔值,它将返回false。
Kotlin本质上具有两种类型的变体:Any和Any?。Any当然可以绝对是任何类别,或指的是实际类别Any。
toBoolean需要一个String,表示一个非空字符串。这很基本:
val someString = "true"
val parsedBool = someString.toBoolean()
Run Code Online (Sandbox Code Playgroud)
如果您具有可为空的类型,它将变得更加复杂。正如我提到的,toBoolean需要一个String。一个String?!=String在这些情况下。
因此,如果您具有可为空的类型,则可以使用安全调用和elvis运算符
val someString: String? = TODO()
val parsedBool = someString?.tooBoolean() ?: false
Run Code Online (Sandbox Code Playgroud)
或者,如果您可以使用可为空的布尔值,则不需要elvis运算符。但是,如果String为null,则布尔值将为null。
只是上面的解释:
someString?.//If something != null
toBoolean() // Call toBoolean
?: false // Else, use false
Run Code Online (Sandbox Code Playgroud)
同样,您不能编译用于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)
Run Code Online (Sandbox Code Playgroud)
String.toBoolean
如果此字符串的内容等于单词“ true”(忽略大小写),则返回true,否则返回false。
在Kotlin中,字符串永远不会为null,因此您不必检查它。这将返回一个布尔值(仅当字符串值为“ true”时才为true)
myString.toBoolean()
Run Code Online (Sandbox Code Playgroud)
现在,如果您有字符串?输入并想要一个布尔值
myString?.toBoolean() ?: false
Run Code Online (Sandbox Code Playgroud)
是否可以使用布尔值?类型返回
myString?.toBoolean()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2778 次 |
| 最近记录: |