You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Scala中如何声明类似Java ArrayList<?>的任意类型数组变量?

正确声明方式

你可以直接将数组的元素类型显式指定为Scala类型系统的顶级父类Any,即可满足「可存储任意类型、支持修改元素、不使用隐式推断」的要求:

val monTabEntiersInit: Array[Any] = Array(1, 2, 5, 6)
// 后续修改Int类型元素不会报错
monTabEntiersInit.update(0, 15)
// 也支持存入其他任意类型的元素
monTabEntiersInit.update(1, "测试字符串")

此前尝试失败的原因

  • 声明为val monTabEntiersInit:Array = Array(1, 2, 5, 6)报错:
    Scala中的Array是带类型参数的泛型类,使用时必须明确指定类型参数,不能直接使用无参数的裸Array类型。
  • 声明为val monTabEntiersInit:Array[_] = Array(1, 2, 5, 6)调用update时报错:
    Array[_]是Scala的存在类型,和Java的List<?>语义完全一致,编译器无法确定该数组的实际元素类型,为了保证类型安全,会禁止向数组中写入除null外的任意值,仅允许读取元素。

补充说明

如果你的使用场景仅需要读取数组元素、不需要修改,使用Array[_]声明是完全合法的;只有需要修改元素、且要支持存储任意类型时,才需要显式指定类型为Array[Any]。

内容的提问来源于stack exchange,提问作者Marc Le Bihan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 21:06:00