否。枚举始终固定在编译时。您执行此操作的唯一方法是动态生成相关的字节码。
话虽如此,您可能应该算出您真正感兴趣的枚举的哪些方面。大概您不想对
switch它们使用语句,因为那将意味着静态代码,并且您不静态知道值。
..同样,代码中的任何其他引用。
如果您真的只想要一个从
String到的映射
Integer,则可以只使用
Map<String, Integer>在执行时填充的a
,这样就完成了。如果您需要这些
EnumSet功能,则以相同的效率重现这些功能会有些棘手,但经过一些努力可能是可行的。
因此,在进一步考虑实现之前,建议您弄清实际需求。
(编辑:我一直假设此枚举是完全动态的,即您不知道名称,甚至不知道有多少值。如果名称集是固定的, 则只 需要从数据库中获取ID ,那是完全不同的问题-
请参阅Andreas的回答。)



