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

时间:2011-03-13 04:35:25

标签: java eclipse scala option

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

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

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

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

2 个答案:

答案 0 :(得分:38)

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

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

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

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

答案 1 :(得分:1)

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

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

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

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