Моя цель - сгенерировать тип AddressBook в виде дерева типа json, включая вложенную структуру.Все остальные поля передаются типу Java, кроме Enum Protobuf. * 1001 *
Теперь у меня есть fieldDescriptor, тип которого - Descriptors.FieldDescriptor.JavaType.ENUM.Я хочу получить из него EnumTypeInfo.
Проще говоря, у меня есть AddressBook.java
, сгенерированный .proto файлом.FieldDescriptor получается с помощью AddressBook.newBuilder().getDescriptorForType().getFields().get(0)
.
switch (fieldDescriptor.getType()) {
case ENUM:
// The param is wrong. What's the right way?
return Types.ENUM(fieldDescriptor.getEnumType().getClass());
}
// This method is written by others and I can not change it.
public static <E extends Enum<E>> TypeInformation<E> ENUM(Class<E> enumType) {
return new EnumTypeInfo<>(enumType);
}
. Возвращаемый EnumTypeInfo должен содержать информацию обо всех значениях в Enum.С помощью fieldDescriptor.getEnumType (). GetValues () я могу получить все значения в Enum.Если я просто использую Types.ENUM (java.lang.Enum.class), enumClass.getEnumConstants () вернет null, а это не то, что я ожидаю.Спасибо.