Есть ли способ добавить динамический список EnumConstants - я ожидаю увидеть addEnumConstants()
.
Кажется, нет параллели с addFields()
или addMethods()
?
Есть ли способ добавить динамический список EnumConstants - я ожидаю увидеть addEnumConstants()
.
Кажется, нет параллели с addFields()
или addMethods()
?
Действительно, нет методов для добавления список констант перечисления. Цитата из документации:
Используйте
enumBuilder
для создания типа перечисления иaddEnumConstant()
для каждого значения:
В этом случае вам нужно будет перебрать все ваши значения перечисления и добавить их одно за другим, вызвав addEnumConstant()
в экземпляре построителя.
Пример кода, который добавляет все перечисления из List<String> myEnumList
:
TypeSpec.Builder builder = TypeSpec.enumBuilder("Roshambo").addModifiers(Modifier.PUBLIC);
for (String str : myEnumList) {
builder.addEnumConstant(str);
}
TypeSpec typeSpec = builder.build();
См. JavaPoet для добавления констант перечисления. Вы можете начать создавать TypeSpec.Builder и вызывать .addEnumConstant в цикле из списка значений.
Однако, если у вас нет списка констант перечисления до создания типа перечисления, вы не можете генерировать их динамически. Константы перечисления должны быть постоянным списком в классе перечисления. Альтернативой является создание одноэлементного класса с динамическим списком допустимых значений и статической функцией .get, которая заменяет функцию .valueOf перечисления.