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

如何将java.io.Serializable转换为Scala的Seq序列?

将Either匹配结果转换为Scala Seq序列

你的问题核心在于当前match语句的两个分支返回类型不一致,导致编译器推断结果类型为java.io.Serializable(Exception和List[TableInfo]的共同父类)。要得到Seq[TableInfo],只需统一两个分支的返回类型即可,以下是两种实现方式:

方式1:修改match语句统一返回类型

因为List本身就是Seq的子类,所以Right分支的List[TableInfo]可以直接作为Seq使用。针对Left分支,你可以选择抛出异常或者返回空序列,示例如下:

// 抛出异常(适合不允许Left场景的业务逻辑)
val seqResult: Seq[TableInfo] = result match {
  case Left(ex) => throw ex
  case Right(tableList) => tableList
}

// 返回空序列(适合容错场景)
val seqResult: Seq[TableInfo] = result match {
  case Left(_) => Seq.empty[TableInfo]
  case Right(tableList) => tableList
}

方式2:使用Either的fold方法简化处理

Scala的Either提供了fold方法,可以更简洁地处理左右分支,同时统一返回类型:

// 自定义Left分支的处理逻辑,这里返回空序列示例
val seqResult: Seq[TableInfo] = result.fold(
  _ => Seq.empty[TableInfo],
  tableList => tableList
)

这样处理后,seqResult的类型就明确为Seq[TableInfo],满足你的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 18:48:38