Dealing with nulls
Nulls are unavoidable, especially if you work with Java libraries or get data from a database. We've already discussed that there are different ways to check whether a variable contains null
in Kotlin; for example:
// 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) }
We could rewrite this code using the Elvis
operator (?:
):
val alwaysLength = stringOrNull?.length ?: 0
If the length is not null
, this operator will return its value. Otherwise, it will return the default value we supplied, which is 0
in this case.
If you have a nested object, you can chain those checks. For example, let's have a Response
object that contains a Profile
, which, in turn, contains the first name and last name fields, which...