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

如何使用ScalaPB或Scala获取所有Protobuf枚举值?

如何在Scala中遍历Protobuf枚举的所有值?

你定义的Protobuf枚举如下:

enum MyEnum {
  A = 0;
  B = 1; 
  C = 2;
}

以下是两种实现遍历所有枚举值的方式:

使用ScalaPB实现

ScalaPB为生成的枚举类提供了现成的values方法,直接调用就能获取所有枚举值的序列,遍历代码非常简洁:

MyEnum.values.foreach(println)

ScalaPB生成的枚举会继承com.google.protobuf.GeneratedEnum,values方法返回的是包含全部枚举值的Seq[MyEnum],直接遍历即可,无需实例化枚举对象。

原生Scala直接处理(无ScalaPB)

如果是用protoc直接生成Java枚举,再在Scala代码中使用,可借助Java枚举自带的values()方法,结合Scala的集合转换工具处理:

// 直接遍历Java数组
MyEnum.values().foreach(println)

// 转换为Scala集合后遍历(更符合Scala习惯)
import scala.jdk.CollectionConverters._
MyEnum.values().asScala.foreach(println)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 06:26:27