如何使用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
相关产品推荐
相关产品推荐

