默认 toString 打印 int 值而不是枚举名称。有没有一种简单的方法可以让它打印枚举名称?
问问题
8418 次
3 回答
6
(答案是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
于 2016-08-05T18:39:28.140 回答
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
于 2013-07-23T03:33:08.133 回答
0
您可以.values()
在 java 中使用枚举值列表。
假设你有一个 protobuf 枚举
enum Foo {
BAR = 1;
BAZ = 2;
}
Foo.values()
如果您从 Java 中引用 Foo,则可以使用- 或者如果您使用通用枚举进行调用,则可以获取 Foo 值的数组, genericEnum.getDeclaringClass().getEnumConstants()
.
这会给你[BAR, BAZ]
。
于 2015-08-04T22:56:29.680 回答