默认的toString打印int值而不是枚举名称。是否有 easy 方式使其打印枚举名称?
答案 0 :(得分:2)
(答案适用于proto3)
使用Carl的枚举示例:
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
答案 1 :(得分:0)
对于以下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-generated#enum
答案 2 :(得分:0)
您可以使用java中的.values()
获取枚举值列表。
假设你有一个protobuf enum
enum Foo {
BAR = 1;
BAZ = 2;
}
如果您从Java引用了Foo,则可以使用Foo.values()
获取一系列Foo值 - 或者如果您使用通用枚举进行调用genericEnum.getDeclaringClass().getEnumConstants()
。
这会给你[BAR, BAZ]
。