2 回答

TA貢獻1842條經驗 獲得超22個贊
它應該是字面上的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
添加回答
舉報