Как получить Class <E>enumType из com.google.protobuf.Descriptors.FieldDescriptor - PullRequest
0 голосов
/ 23 мая 2019

Моя цель - сгенерировать тип 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, а это не то, что я ожидаю.Спасибо.

...