# Java Optionals and Kotlin Nulls

DevFeed: [Java Optionals and Kotlin Nulls](<https://devfeed.tech/articles/java-optionals-and-kotlin-nulls-25040.md>)

Original publisher: [Read original article](<https://typealias.com/guides/java-optionals-and-kotlin-nulls/>)

Author: author@typealias.com (Dave Leeds)

Published: 2017-09-01T00:00:00Z

Content type: tutorial

Language: en

Sources: [Dave Leeds on Kotlin - typealias.com](<https://devfeed.tech/sources/dave-leeds-on-kotlin-typealias-com.md>)

Topics: [Java](<https://devfeed.tech/topics/java.md>), [Kotlin](<https://devfeed.tech/topics/kotlin.md>)

Tags: [exception](<https://devfeed.tech/tags/exception.md>), [extension-function](<https://devfeed.tech/tags/extension-function.md>), [filter](<https://devfeed.tech/tags/filter.md>), [java](<https://devfeed.tech/tags/java.md>), [java-8](<https://devfeed.tech/tags/java-8.md>), [kotlin](<https://devfeed.tech/tags/kotlin.md>), [migration-guide](<https://devfeed.tech/tags/migration-guide.md>), [null](<https://devfeed.tech/tags/null.md>), [null-safety](<https://devfeed.tech/tags/null-safety.md>), [optional](<https://devfeed.tech/tags/optional.md>), [programming](<https://devfeed.tech/tags/programming.md>), [safe-call-operator](<https://devfeed.tech/tags/safe-call-operator.md>), [standard-library](<https://devfeed.tech/tags/standard-library.md>), [transformation](<https://devfeed.tech/tags/transformation.md>)

## AI overview

A guide to translating Java Optional usage into idiomatic Kotlin null-safety patterns. It compares creation, transformation, filtering, and conditional operations, while noting trade-offs and cases where Kotlin nullable types replace Optional.

## Source excerpt

When Java 8 introduced Streams for operating on collections of data, it also introduced a similar concept, Optional, which has many methods that are similar to Stream, but operates on a single value that might or might not be present. As you migrate your projects from Java to Kotlin, you might come across some Optional objects. What should you do? Should you leave them as Optional, or change them to more idiomatic Kotlin?