Scala中如何创建含整数值的Array[Any]?附类型匹配问题解决
搞定Scala里Array[Int]与Array[Any]的类型不匹配问题
嘿,我来给你拆解这个问题的前因后果:
最开始你想创建一个数值数组,传递给接收Array[Any]类型参数的方法,用常规写法写了:
val inputIds = Array(7, 1, 4)
结果IntelliJ直接弹出类型不匹配错误:预期Array[Any],实际为Array[Int]。
其实这是因为Scala中的Array属于不变类型——简单说就是Array[Int]不能直接作为Array[Any]来使用,不像部分支持协变的类型可以自动向上兼容。当你不手动指定数组类型时,Scala会自动推断出最精确的元素类型,也就是Int,所以最终得到的是Array[Int],自然和方法要求的Array[Any]类型不匹配。
后来你找到的解决方法完全正确:只要在创建数组时明确指定类型为Array[Any],就能强制让数值元素被向上转型为Any类型:
val inputIds = Array[Any](7, 1, 3)
这样生成的数组就可以顺利传递给目标方法了。
内容的提问来源于stack exchange,提问作者Adair
相关产品推荐
相关产品推荐

