Dealing with nulls

Nulls are unavoidable, especially if you work with Java libraries or get data from a database. 

But you can check for null the Java way:

// Will return "String" half of the time, and null the other half
val
stringOrNull: String? = if (Random().nextBoolean()) "String" else null

// Java-way check
if (stringOrNull != null) {
println(stringOrNull.length)
}

Or in a shorter form, with the Elvis operator. If the length is not null, this operator will return its value. Otherwise, it will return the default value we supplied, zero in this case:

val alwaysLength = stringOrNull?.length ?: 0

println(alwaysLength) // Will print 6 or 0, but never null

If you have a nested object, you can chain those checks:

data class Json(
val User: Profile?
)

data class Profile(val firstName: String?,
val lastName: String?)

val json: Json? = Json(Profile(null, null))

println(json?.User?.firstName?.length)

Finally, you can use the let() block for those checks:

println(json?.let {
it.User?.let {
it.firstName?.length
}
})

If you want to get rid of the it() everywhere, you can use run:

println(json?.run {
User?.run {
firstName?.length
}
})

By all means, do try to avoid the unsafe !! null operator:

println(json!!.User!!.firstName!!.length)

This will result in KotlinNullPointerException.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset
18.217.150.123