Как вызвать 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));