[英]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.