我必须在Scala中使用Java函数,该函数接受type的参数Optional<Type>,而我必须传递给它的对象也来自Java库,但它只是type Type。如何在Scala中使用它?
可以,如果我像这样打字的话。请注意,此处javaObj来自Java库,类型为Type。但是someFunctionDefinedInAJavaLibrary这里的函数需要一个类型为的参数Optional<Type>。
import java.util.Optional
....
// javaObj here is of type Type and comes from a Java library
val scalaObj: Optional[Type] = javaObj.asInstanceOf[Optional[Type]]
// someFunctionDefinedInAJavaLibrary's argument is of type Optional<Type>
val r = someFunctionDefinedInAJavaLibrary(scalaObj)
Run Code Online (Sandbox Code Playgroud)
从字面上看,它应该与Java中的1:1相同:
someFunctionDefinedInAJavaLibrary(Optional.of(javaObj))
Run Code Online (Sandbox Code Playgroud)
从Java-API调用函数时,只需忘记它asInstanceOf或scala.Option存在它即可。
如果必须在Java Optional和Scala 之间进行实际转换Option,则可以使用scala-java8-compat(maven central),但是在这种特殊情况下没有必要,因为在任何Option地方都没有s。
| 归档时间: |
|
| 查看次数: |
494 次 |
| 最近记录: |