4

默认 toString 打印 int 值而不是枚举名称。有没有一种简单的方法可以让它打印枚举名称?

4

3 回答 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

https://developers.google.com/protocol-buffers/docs/reference/java/com/google/protobuf/Descriptors.EnumDescriptor#getName()

于 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 回答