Я работаю над смешанным проектом java / scala и пытаюсь вызвать метод объекта scala из Java. Этот метод принимает Option[Double] в качестве параметра. Я думал, что это будет работать:
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)
() является синтаксическим сахаром для apply[A](A obj) метода объекта-компаньона Option.Следовательно, он может быть напрямую вызван в Java:
()
apply[A](A obj)
Option
Option<Double> doubleValue = Option.apply(1.0);
Вы можете создать экземпляр Some таким образом, это скомпилирует для меня,
Some<Double> d = new Some<Double>(Double.valueOf(1));
Возможно, проблема в отсутствующих генериках, попробуйте сделать,
scalaObj.scalaMethod(new Some<Double>(doubleValue));