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

Scala 2.13.x中如何获取值为String类型的Enumeration的所有枚举值

你当前的UserType定义不符合Scala原生Enumeration的使用规范:你直接为member、admin赋值了字符串常量,没有调用Enumeration提供的Value()方法,因此values内置集合不会收录这两个自定义成员,自然无法通过values拿到你需要的字符串集合。

这里提供两种可落地的实现方案:

方案1:调整为标准Enumeration写法

按照Scala Enumeration的规范定义,给每个枚举项传入对应的字符串标识,使用时调用toString转换为字符串即可:

// 调整后的枚举定义
object UserType extends Enumeration {
  type UserType = Value
  val member = Value("member")
  val admin = Value("admin")
}

// 获取字符串集合
val userTypes: Set[String] = UserType.values.map(_.toString).toSet

方案2:直接用普通Object定义(无需继承Enumeration)

如果你不需要Enumeration的内置能力,只是想维护固定的字符串常量集合,直接用普通Object实现更简单,无需额外做类型转换:

object UserType {
  val member = "member"
  val admin = "admin"
  // 手动维护所有枚举值的集合,新增项同步更新即可
  val values: Set[String] = Set(member, admin)
}

// 直接调用即可拿到目标集合
val userTypes: Set[String] = UserType.values

如果你完全不想修改现有UserType的定义,可以通过反射扫描该Object下的公共String类型成员来收集值,但是该方式性能差、编译期无法检查成员遗漏,不建议生产环境使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:36:01