Как вызвать scala Конструкторы опций из Java

Я работаю над смешанным проектом java/ scala, и я пытаюсь вызвать метод объекта scala из Java. Этот метод принимает Option[Double] как параметр. Я думал, что это сработает:

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

Но Eclipse говорит мне: "Конструктор Some (Double) - undefined".

Должен ли я ссылаться на конструктор для scala.Some по-другому?

Ответы

Ответ 1

В Scala вы обычно поднимаете до опции следующим образом:

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);

Ответ 2

Вы можете создать экземпляр Some таким образом, это компилируется для меня,

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

Проблема может заключаться в отсутствии дженериков, попробуйте сделать,

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