Pun*_*tan 0 scala type-mismatch
def foo(x : Array[Any]) = println(x.length);
foo(Array[String]("test", "test"));
Run Code Online (Sandbox Code Playgroud)
此代码将引发错误消息:
:6: error: type mismatch;
found : Array[String]
required: Array[Any]
foo(Array[String]("test", "test"))
Run Code Online (Sandbox Code Playgroud)
Scala中的所有类都直接或间接地从Any类继承.所以String是Any.为什么我们不能将Array [String]传递给foo方法?
数组在其参数的类型上是不变的,这意味着它String是Any,但Array[String]不是Array[Any].
def foo[T](x: Array[T])或者def foo(x: Array[_])都会奏效.