2016-01-21 93 views
1

有没有办法添加一个动态列表EnumConstants - 我期望看到addEnumConstants()JavaPoet添加枚举常量列表

似乎没有与addFields()addMethods()平行吗?

+0

你可以举一个例子plz –

+0

我有一个列表(如在ArrayList中)需要添加到枚举的常量。如果我事先不知道这些值,我该怎么做。 – Dan

+0

你是什么意思加入到枚举?一些代码肯定会帮助:) –

回答

2

确实有no methods添加枚举常量的列表。从documentation报价:

使用enumBuilder创建枚举类型,addEnumConstant()每个值:

在这种情况下,你需要遍历所有的枚举值,并将其添加一个通过在构建器实例上调用addEnumConstant()

,增加了所有枚举

示例代码frol的List<String> myEnumList

TypeSpec.Builder builder = TypeSpec.enumBuilder("Roshambo").addModifiers(Modifier.PUBLIC); 
for (String str : myEnumList) { 
    builder.addEnumConstant(str); 
} 
TypeSpec typeSpec = builder.build(); 
0

请参阅JavaPoet添加枚举常量。您可以开始创建TypeSpec.Builder,并从值列表中循环调用.addEnumConstant。

但是,如果您在生成枚举类型之前没有枚举常量列表,则无法动态生成它们。枚举常量必须是枚举类中的常量列表。另一种方法是生成一个包含有效值的动态列表的单例类和一个替换枚举的.valueOf函数的.get静态函数。