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

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

 Double doubleValue = new Double(1.0); scalaObj.scalaMethod(new Some(doubleValue)); 

但Eclipse告诉我“构造函数Some(Double)未定义”。

我应该调用scala.Some的构造函数。 scala.Some不同?

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

 scala> val doubleValue = Option(1.0) doubleValue: Option[Double] = Some(1.0) 

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

 Option doubleValue = Option.apply(1.0); 

你可以用这种方式构造一个实例,这为我编译,

 Some d = new Some(Double.valueOf(1)); 

问题可能是缺少的generics,尝试做,

 scalaObj.scalaMethod(new Some(doubleValue));