Изменения в новых версиях / Kotlin 1.8

import java.util.Optional
import kotlin.jvm.optionals.getOrDefault
import kotlin.jvm.optionals.getOrElse
import kotlin.jvm.optionals.getOrNull
import kotlin.jvm.optionals.toList

val opt: Optional<String> = Optional.of("Kotlin")
val empty: Optional<String> = Optional.empty()

// *** before: ***
val valueOld: String? = if (opt.isPresent) opt.get() else null

// *** in version 1.8: ***
// the extensions turn a Java Optional into ordinary Kotlin nullability
val value: String? = opt.getOrNull()
val orDefault: String = empty.getOrDefault("none")
val orComputed: String = empty.getOrElse { "computed" }
val asList: List<String> = opt.toList()

fun main() {
    println("$valueOld $value $orDefault $orComputed $asList")
    println(empty.getOrNull()?.length ?: 0)
}