As it said in Kotlin reference, !!
is an option for NPE-lovers 🙂
a!!.length
will return a non-null value of a.length
or throw a NullPointerException if a
is null
:
val a: String? = null
print(a!!.length) // >>> NPE: trying to get length of null
a?.length
returns a.length
if a
is not null
, and null
otherwise:
val a: String? = null
print(a?.length) // >>> null is printed in the console
To sum up:
+------------+--------------------+---------------------+----------------------+
| a: String? | a.length | a?.length | a!!.length |
+------------+--------------------+---------------------+----------------------+
| "cat" | Compile time error | 3 | 3 |
| null | Compile time error | null | NullPointerException |
+------------+--------------------+---------------------+----------------------+
Might be useful: What is a NullPointerException?