javascalascala-2.8

Passing Java array to Scala


Although I've been using Scala for a while and have mixed it with Java before, I bumped on a problem.

How can I pass a Java array to Scala? I know that the other way around is fairly straightforward. Java to Scala is not so however.

Should I declare my method in Scala?

Here is a small example of what I'm trying to achieve:

Scala:

def sumArray(ar: Array[Int]) = ...

Java:

RandomScalaClassName.sumArray(new int[]{1,2,3});

Is this possible?


Solution

  • absolutely!

    The Array[T] class in Scala is mapped directly to the Java type T[]. They both have exactly the same representation in bytecode.

    At least, this is the case in 2.8. Things were a little different in 2.7, with lots of array boxing involved, but ideally you should be working on 2.8 nowadays.

    So yes, it'll work exactly as you've written it.