亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 Scala 中使用 Java Optional 對象?

如何在 Scala 中使用 Java Optional 對象?

揚帆大魚 2022-09-07 17:47:10
我必須在Scala中使用Java函數,該函數接受類型的參數,并且我必須傳遞給它的對象也來自Java庫,但只是類型 。如何在Scala中使用它?Optional<Type>Type可以嗎,如果我像這樣打字。請注意,此處來自 Java 庫,類型為 。但是這里的函數需要一個類型的參數。javaObjTypesomeFunctionDefinedInAJavaLibraryOptional<Type>import java.util.Optional....// javaObj here is of type Type and comes from a Java libraryval scalaObj: Optional[Type] = javaObj.asInstanceOf[Optional[Type]]// someFunctionDefinedInAJavaLibrary's argument is of type Optional<Type>val r = someFunctionDefinedInAJavaLibrary(scalaObj)
查看完整描述

2 回答

?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

它應該是字面上的1:1,與Java中的表達式相同:

someFunctionDefinedInAJavaLibrary(Optional.of(javaObj))

只要忘記這一點,或者在從Java-API調用函數時存在。asInstanceOfscala.Option


如果你曾經必須在Java和Scala之間進行實際轉換,你可以使用scala-java8-compatmaven central),但在這種特殊情況下沒有必要,因為任何地方都沒有。OptionalOptionOption


查看完整回答
反對 回復 2022-09-07
?
猛跑小豬

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


查看完整回答
反對 回復 2022-09-07
  • 2 回答
  • 0 關注
  • 110 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號