I need to convert Scala Option to Java Optional. I managed to wrote this:
public <T> Optional<T> convertOption2Optional(Option<T> option) {
return option.isDefined() ? Optional.of(option.get()) : Optional.empty();
}
But I don't like it.
Is there a simple way to do it, or a built-in scala converter? I'm looking for something like:
Options.asJava(option);
The shortest way I can think of in Java is:
Optional.ofNullable(option.getOrElse(null))
@RégisJean-Gilles actually suggested even shorter if you are writing the conversion in Scala:
Optional.ofNullable(option.orNull)
By the way you must know that Scala does not support Java 8 until Scala 2.12, which is not officially out yet. Looking at the docs (which may change until the release) there is no such conversion in JavaConversions
.
Starting Scala 2.13
, there is a dedicated converter from scala's Option
to java's Optional
.
From Java (the explicit way):
import scala.jdk.javaapi.OptionConverters;
// val option: Option[Int] = Some(42)
OptionConverters.toJava(option);
// java.util.Optional[Int] = Optional[42]
From Scala (the implicit way):
import scala.jdk.OptionConverters._
// val option: Option[Int] = Some(42)
option.toJava
// java.util.Optional[Int] = Optional[42]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With