Some("abc").asInstanceOf[Optional[String]]
не будет работать, потому что Scala Option
и Java Optional
являются несвязанными типами.
Вы можете включить библиотеку совместимости с Java8 для преобразования междутипы (как и для совместимости с коллекциями Java, с которыми вы, возможно, знакомы), или просто делайте это вручную.
def toJavaOptional[A](maybeA: Option[A]): Optional[A] =
maybeA.fold(Optional.empty)(a => Optional.of(a))
def toScalaOption[A](maybeA: Optional[A]): Option[A] =
if (maybeA.isEmpty) None else Some(maybeA.get)
javaObj имеет тип Type
, а не Optional<Type>
, но функция ожидает Optional<Type>
Затем сделайте то же самое, что и в Java (которая автоматически не «вставляет» Type
в Optional<Type>
):
callJavaFunction(Optional.of(a))
Вы можете напрямую использовать все методы Java API в Scala, включая Optional.of
.