Arrays are regular JVM arrays with a twist that they are treated as invariant and have special constructors and implicit conversions. Construct them without the new
keyword.
val a = Array("element")
Now a
has type Array[String]
.
val acs: Array[CharSequence] = a
//Error: type mismatch; found : Array[String] required: Array[CharSequence]
Although String
is convertible to CharSequence
, Array[String]
is not convertible to Array[CharSequence]
.
You can use an Array
like other collections, thanks to an implicit conversion to TraversableLike
ArrayOps
:
val b: Array[Int] = a.map(_.length)
Most of the Scala collections (TraversableOnce
) have a toArray
method taking an implicit ClassTag
to construct the result array:
List(0).toArray
//> res1: Array[Int] = Array(0)
This makes it easy to use any TraversableOnce
in your Scala code and then pass it to Java code which expects an array.