Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to call scala's Option constructors from Java

Tags:

I am working on a mixed java/scala project, and I am trying to call a scala object's method from Java. This method takes an Option[Double] as a parameter. I thought this would work:

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

But Eclipse tells me "The constructor Some(Double) is undefined".

Should I be calling the constructor for scala.Some differently?

like image 648
pkaeding Avatar asked Mar 13 '11 04:03

pkaeding


2 Answers

In Scala you normally lift to Option as follows:

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

() is a syntactic sugar for apply[A](A obj) method of Option's companion object. Therefore, it can be directly called in Java:

Option<Double> doubleValue = Option.apply(1.0); 
like image 102
Vasil Remeniuk Avatar answered Nov 01 '22 07:11

Vasil Remeniuk


You can construct a Some instance that way, this compiles for me,

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

The problem may be the missing generics, try doing,

scalaObj.scalaMethod(new Some<Double>(doubleValue)); 
like image 30
sbridges Avatar answered Nov 01 '22 07:11

sbridges