[英]How to print enum names instead of int value of a protocol buffer (Java)
默认的toString打印int值,而不是枚举名称。 有没有一种简单的方法可以使它打印枚举名称呢?
(答案是针对proto3 )
使用卡尔的枚举示例:
enum Foo {
BAR = 1;
BAZ = 5;
QUX = 1234;
}
假设您具有变量: Foo foo = Foo.BAR
,以获取foo
的名称:
String fooName = foo.getValueDescriptor().getName(); //fooName="BAR"
另请参阅:
https://developers.google.com/protocol-buffers/docs/reference/java-generated#enum
对于以下protobuf枚举:
enum Foo {
BAR = 1;
BAZ = 5;
QUX = 1234;
}
文档说:
An integer constant is also generated with the suffix _VALUE for each enum value.
听起来您正在使用常量“例如BAR_VALUE,BAZ_VALUE或QUX_VALUE”。 是这样吗
请参阅: https : //developers.google.com/protocol-buffers/docs/reference/java-genic#enum
您可以使用Java中的.values()
获得枚举值的列表。
假设您有一个protobuf枚举
enum Foo {
BAR = 1;
BAZ = 2;
}
如果从Java引用了Foo,则可以使用Foo.values()
获得Foo值的数组-或者,如果正在使用通用枚举进行调用,则genericEnum.getDeclaringClass().getEnumConstants()
。
这会给你[BAR, BAZ]
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.