2 回答
TA贡献1842条经验 获得超21个赞
它应该是字面上的1:1,与Java中的表达式相同:
someFunctionDefinedInAJavaLibrary(Optional.of(javaObj))
只要忘记这一点,或者在从Java-API调用函数时存在。asInstanceOf
scala.Option
如果你曾经必须在Java和Scala之间进行实际转换,你可以使用scala-java8-compat(maven central),但在这种特殊情况下没有必要,因为任何地方都没有。Optional
Option
Option
TA贡献1858条经验 获得超8个赞
Some("abc").asInstanceOf[Optional[String]]不起作用,因为Scala和Java是不相关的类型。OptionOptional
您可以包含一个 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 的类型不是 ,但函数期望TypeOptional<Type>Optional<Type>
然后做你在Java中会做的事情(它不会自动“box”a到任何一个中):TypeOptional<Type>
callJavaFunction(Optional.of(a))
您可以直接在 Scala 中使用所有 Java API 方法,包括 .Optional.of
添加回答
举报