In Kotlin How Can I Convert an Int? to an Int
The direct answer, use the !!
operator to assert that you trust a value is NOT null and therefore changing its type to the non null equivalent. A simple sample showing the assertion allowing the conversion (which applies to any nullable type, not just Int?
)
val nullableInt: Int? = 1
val nonNullableInt: Int = nullableInt!! // asserting and smart cast
Another way to convert a value is via a null check. Not useful in your code above, but in other code (see Checking for null in conditions):
val nullableInt: Int? = 1
if (nullableInt != null) {
// allowed if nullableInt could not have changed since the null check
val nonNullableInt: Int = nullableInt
}
This questions is also answered by the idiomatic treatment of nullability question: In Kotlin, what is the idiomatic way to deal with nullable values, referencing or converting them
In order to convert an Int?
to an Int
use the sure()
method.
The offending line should look like:
return fibMemo.get(n).sure()
Call to method
sure()
is Kotlin way (soon to be replaced by special language construct) to ensure non-nullability. As Java has not notation of nullable and non-nullable types we need to take some care on integration point. Please read amazing story of null-safety in Kotlin documentation.
source
Warning: the above information doesn't hold anymore. sure
has been replaced by !!
. See: http://blog.jetbrains.com/kotlin/migrating-sure/
You can also use a default value in null case:
val int: Int
val nullableInt: Int? = null
int = nullableInt ?: 0