我需要将Scala选项转换为Java可选。我写下了这样的话:
public <T> Optional<T> convertOption2Optional(Option<T> option) {
return option.isDefined() ? Optional.of(option.get()) : Optional.empty();
}
但是我不喜欢。
有没有简单的方法来做到这一点,或者内置的scala转换器?我正在寻找类似的东西:
Options.asJava(option);
在2.10
中有一个asJava
:
import scala.compat.java8.OptionConverters._
val o = Option(2.7)
val oj = o.asJava // Optional[Double]
val ojd = o.asPrimitive // OptionalDouble
val ojds = ojd.asScala // Option(2.7) again
更多细节在这里。
从Scala 2.13
开始,有一个专用的转换器,从scala的Option
到java的Opted。
从Java(显式方式):
import scala.jdk.javaapi.OptionConverters;
// val option: Option[Int] = Some(42)
OptionConverters.toJava(option);
// java.util.Optional[Int] = Optional[42]
来自Scala(隐式方式):
import scala.jdk.OptionConverters._
// val option: Option[Int] = Some(42)
option.toJava
// java.util.Optional[Int] = Optional[42]
我能想到的Java最短的方法是:
Optional.ofNullable(option.getOrElse(null))
@RégisJean-Gilles实际上建议,如果你在Scala中编写转换,那就更短了:
Optional.ofNullable(option.orNull)
顺便说一下,您必须知道Scala在Scala 2.12之前不支持Java8,这还没有正式发布。查看文档(可能会在发布前更改)在JavaConversion
中没有这样的转换。
我有一个用Java编写的gradle项目,想把整个事情变成一个scala项目(仍然是gradle)。要做到这一点,需要采取哪些步骤? 我开始在scala中定义main方法,似乎Intellij不知道我要做什么。 到目前为止我所做的: > 在build.gradle中应用插件:“scala”--> 在build.gradle中编译'org.scala-lang:scala-library:2.10.
本文向大家介绍Java将可选流转换为值流,包括了Java将可选流转换为值流的使用技巧和注意事项,需要的朋友参考一下 示例 您可能需要一个转换Stream发射Optional到一个Stream值,从现有的发射只值Optional。(即:没有null价值,不与之打交道)。Optional.empty()
问题内容: 我需要在Java中实现一个返回Scala的方法。 但是我遇到这个错误: 到目前为止,这是我的代码: 但似乎没有提供将其转换为的可能性。 问题答案: 我需要JavaConverters来解决这个问题。
我想将下面方法的返回类型更改为< code>Future[Unit] 我使用的是Scala 2.12.1。是否有任何方便的方法可以将Java 8<code>CompletableFuture
我要将转换为: 如果可选选项包含值,则流包含该值。 如果可选项不包含值,则流应为空。
我想用可选的。由于只能连接流,我有以下问题: 如何将可选 转换为流 ? 示例: