如何从Java调用Scala的选项构造函数

igetnqfo  于 2022-09-21  发布在  Java
关注(0)|答案(2)|浏览(180)

我正在进行一个Java/Scala混合项目,并且我正在尝试从Java调用Scala对象的方法。此方法以Option[Double]作为参数。我以为这能行得通:

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

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

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

4zcjmb1e

4zcjmb1e1#

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

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

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

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

u59ebvdq2#

你可以这样构造一个示例,这是为我编译的,

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

问题可能是缺少泛型,试着这样做,

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

相关问题