Kotlin
Beginner
1 min read
Platform Types and Java Interop Nullability
Example
// Demonstrating runCatching for safe error handling
fun riskyParse(input: String): Int {
return input.toInt() // throws NumberFormatException on bad input
}
fun safeParseWithResult(input: String): Result<Int> =
runCatching { riskyParse(input) }
fun main() {
// runCatching returns Result<T>
val good = safeParseWithResult("42")
val bad = safeParseWithResult("abc")
println(good.getOrDefault(0)) // 42
println(bad.getOrDefault(0)) // 0
good.onSuccess { println("Parsed: $it") }
bad.onFailure { println("Error: ${it.message}") }
// map and recover on Result
val transformed = bad
.map { it * 2 }
.recover { -1 }
.getOrNull()
println("Recovered: $transformed") // -1
// Nullable return from standard library (similar to Java interop)
val map = mapOf("key" to "value")
val found: String? = map["key"] // returns V? from Java Map
val missing: String? = map["other"]
println(found ?: "not found") // value
println(missing ?: "not found") // not found
// requireNotNull and checkNotNull
val input: String? = "data"
val safe = requireNotNull(input) { "Input must not be null" }
println(safe.length) // 4
}