JavaPoet добавляет список констант перечисления

Есть ли способ добавить динамический список EnumConstants - я ожидаю увидеть addEnumConstants().

Кажется, нет параллели с addFields() или addMethods()?


person Dan    schedule 21.01.2016    source источник
comment
можешь привести пример плз   -  person Sleiman Jneidi    schedule 21.01.2016
comment
У меня есть список (как в ArrayList) констант, которые нужно добавить в перечисление. Как мне это сделать, если я не знаю этих значений заранее.   -  person Dan    schedule 21.01.2016
comment
что вы подразумеваете под добавлением в перечисление? Некоторый код определенно поможет :)   -  person Sleiman Jneidi    schedule 21.01.2016


Ответы (2)


Действительно, нет методов для добавления список констант перечисления. Цитата из документации:

Используйте 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();
person Tunaki    schedule 21.01.2016

См. JavaPoet для добавления констант перечисления. Вы можете начать создавать TypeSpec.Builder и вызывать .addEnumConstant в цикле из списка значений.

Однако, если у вас нет списка констант перечисления до создания типа перечисления, вы не можете генерировать их динамически. Константы перечисления должны быть постоянным списком в классе перечисления. Альтернативой является создание одноэлементного класса с динамическим списком допустимых значений и статической функцией .get, которая заменяет функцию .valueOf перечисления.

person Gennadiy    schedule 21.01.2016