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

2022-09-01 20:16:40

我正在开发一个混合java/scala项目,我试图从Java调用scala对象的方法。此方法采用 a 作为参数。我认为这会起作用:Option[Double]

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

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

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


答案 1

在Scala中,您通常按如下方式提升到选项:

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

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

Option<Double> doubleValue = Option.apply(1.0);

答案 2

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

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

问题可能是缺少泛型,请尝试做,

scalaObj.scalaMethod(new Some<Double>(doubleValue));

推荐