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

Scala操作MongoDB调用getList获取Seq[Int]字段出现类型转换异常如何解决

异常原因
  • 语法使用错误:Int.getClass 获取的是Scala Int 类型伴生对象 scala.Int$ 的Class实例,并非你期望的整数元素类型的Class,和驱动返回的元素类型完全不匹配。
  • 类型匹配错误:MongoDB Scala驱动反序列化BsonInt32类型的数组元素时,默认返回的是Java装箱类型 java.lang.Integer,无法直接强制转换为Scala的值类型 Int。
修复方案

首先导入Scala与Java集合的互转工具类:

// Scala 2.12+ 推荐使用该互转工具,旧版本可替换为 scala.collection.JavaConverters._
import scala.jdk.CollectionConverters._

将原读取groups的代码替换为如下写法即可:

val groups = n.getList("groups", classOf[java.lang.Integer]).asScala.map(_.toInt).toSeq

该代码执行逻辑如下:

  1. 传入 classOf[java.lang.Integer] 指定正确的元素类型,匹配驱动反序列化BsonInt32的返回类型
  2. 通过 asScala 方法将Java List转换为Scala集合
  3. 遍历元素调用toInt将Java装箱类型Integer转为Scala值类型Int
  4. 最终转为Seq[Int]类型返回,符合Scala常规使用习惯

内容的提问来源于stack exchange,提问作者user7429643

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:24:03