import java.util.Optional /** * Implicit conversions between Scala Option and Java 8 Optional. */ object JavaOptionals { /** * Transform a Scala Option[T] to a Java Optional[T] */ implicit def toRichOption[T](opt: Option[T]): RichOption[T] = new RichOption[T](opt) /** * Transform a Java Optional[T] to a Scala Option[T] */ implicit def toRichOptional[T](optional: Optional[T]): RichOptional[T] = new RichOptional[T](optional) } class RichOption[T] (opt: Option[T]) { def toOptional: Optional[T] = Optional.ofNullable(opt.getOrElse(null).asInstanceOf[T]) } class RichOptional[T] (opt: Optional[T]) { def toOption: Option[T] = if (opt.isPresent) Some(opt.get()) else None }