Java >> Java tutorial >  >> Tag >> boolean

Java Boolean.valueOf() ækvivalent i Kotlin?

Det er, som allerede nævnt, .toBoolean() .

Det virker ret simpelt:hvis værdien af ​​en streng er true , ignorerer store og små bogstaver, den returnerende værdi er true . I alle andre tilfælde er det falsk. Hvilket betyder, at hvis strengen ikke er en boolsk, vil den returnere falsk.

Kotlin har grundlæggende to varianter af typer:Any og Any? . Any kan selvfølgelig være en hvilken som helst klasse, eller henvise til den faktiske klasse Any .

toBoolean kræver en String , hvilket betyder en ikke-nul streng. Det er ret grundlæggende:

val someString = "true"
val parsedBool = someString.toBoolean()

Det bliver lidt mere kompliceret, hvis du har nullbare typer. Som jeg nævnte, toBoolean kræver en String . En String? !=String i disse tilfælde.

Så hvis du har en nullbar type, kan du bruge safe call og elvis-operatøren

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

Eller, hvis du kan leve med en nullbar boolean, behøver du ikke elvis-operatøren. Men hvis strengen er nul, vil den boolske værdi også være det.

Bare en forklaring på ovenstående:

someString?.//If something != null
    toBoolean() // Call toBoolean
    ?: false // Else, use false

Du kan heller ikke kompilere et program, der bruger toBoolean på en nul-reference. Compileren blokerer det.

Og endelig, til reference, metodeerklæringen:

/**
 * 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)

String.toBoolean

Returnerer sand, hvis indholdet af denne streng er lig med ordet "true", ignorerer store og små bogstaver og ellers falsk.

I Kotlin er en streng aldrig null, så du behøver ikke at tjekke den. Dette returnerer en boolesk (sand kun hvis strengværdien er 'sand')

myString.toBoolean()

Hvis du nu har en streng? skriv og ønsker en boolsk

myString?.toBoolean() ?: false

Hvis du er ok med en boolesk? type returneret

myString?.toBoolean()

Du bør vide, om det er null før opkaldet, fordi du enten har med en String at gøre eller en String? . ? er suffikset, som Kotlin bruger til at angive nullbare typer.

Hvis du har en String , så burde du kunne bruge toBoolean() .

Hvis du har en String? — og så du kan have en værdi, eller du kan have null — du kan bruge et null-safe-opkald plus Elvis-operatøren til at angive, hvilken værdi du ønsker, hvis String? er null :

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

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

Dette udskriver:

true
false

bar?.toBoolean() evalueres til null og null ?: false evalueres til false .


Java tag