Scala can't multiply java Doubles?

scala

Solution

I would define an implicit conversion to a Scala `Double`

implicit def javaToScalaDouble(d: java.lang.Double) = d.doubleValue

Now your code works! And similarly expressions like `1.2 + x` work as well. And due to auto-boxing code like the following does compile without requiring implicit conversions.

def foo(d: java.lang.Double) = println(d)
val z: scala.Double = 1.2
foo(z)

-- Flaviu Cipcigan

Problem

While working with a Java class in Scala, I noticed that Scala can't multiply Java Doubles. Here's an example: ``` scala> val x:java.lang.Double = new java.lang.Double(34.0) x: java.lang.Double = 34.0 scala> val y:java.lang.Double = new java.lang.Double(2.1) y: java.lang.Double = 2.1 scala> x*y <console>:7: error: value * is not a member of java.lang.Double x*y ^ ``` Whoa! I guess it's because Scala operators are just methods, so it's trying to call the multiply method of the Java Double class (ie, "34.0.*(2.1)"). Oops. Is there an easy way to do this interop?

Original source