I have the below code to pick the first item from the list where the item's lastname field value should not be UNKNOWN
or MISSING
.
val userLastName = someList
.first { it.lastName != "UNKNOWN" && it.lastName != "MISSING" }
.lastName
Now Intellij says that the field userLastName can never be null. Why?
If the list has all objects whose lastName
field value is either UNKNOWN
or MISSING
then the userLastName
variable will be null right?
I tried to change the code to use null safe operator:
val userLastName = someList
.first { it.lastName != "UNKNOWN" && it.lastName != "MISSING" }
?.lastName
But I get the below warning:
Safe call on a non-null receiver will have nullable type in future releases
CodePudding user response:
The .first
function requires that at least one element matches the predicate. It throws an exception if no matching element is found.
If you want to instead return null
when no elements match, you can use .find
instead of .first
.