如何从Java调用scala的Option构造函数

pka*_*ing 20 java eclipse scala option

我正在研究一个混合的java/scala项目,我试图从Java调用scala对象的方法.此方法将Option[Double]参数作为参数.我认为这会奏效:

Double doubleValue = new Double(1.0);
scalaObj.scalaMethod(new Some(doubleValue));
Run Code Online (Sandbox Code Playgroud)

但Eclipse告诉我"构造函数Some(Double)未定义".

我应该以scala.Some不同的方式调用构造函数吗?

Vas*_*iuk 41

在Scala中,您通常会按如下方式升级到Option:

scala> val doubleValue = Option(1.0)
doubleValue: Option[Double] = Some(1.0)
Run Code Online (Sandbox Code Playgroud)

()是伴侣对象apply[A](A obj)方法的语法糖Option.因此,它可以直接在Java中调用:

Option<Double> doubleValue = Option.apply(1.0);
Run Code Online (Sandbox Code Playgroud)