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