Canonical way for empty Array in Scala?

Array[String]()

You can leave out the [String] part if it can be inferred (e.g. methodThatAlwaysTakesAStringArray( Array() )).


val emptyArray =  Array.empty[Type]

Array() will be enough, most of the times. It will be of type Array[Nothing].

If you use implicit conversions, you might need to actually write Array[Nothing], due to Bug #3474:

def list[T](list: List[T]) = "foobar"
implicit def array2list[T](array: Array[T]) = array.toList

This will not work:

list(Array()) => error: polymorphic expression cannot be instantiated to expected type;
    found   : [T]Array[T]
    required: List[?]
        list(Array())
                  ^

This will:

list(Array[Nothing]()) //Nothing ... any other type should work as well.

But this is only a weird corner case of implicits. It's is quite possible that this problem will disappear in the future.


If the array type is one of the primitives, you can use the shortcuts from scala.Array.

For example for a byte array it would be:

val arr = Array.emptyByteArray

This is useful when the type cannot be inferred and you want to remain less verbose.