Java 在运行时(或某些中间件的编译时)定义枚举的简单方法

Java 在运行时(或某些中间件的编译时)定义枚举的简单方法,java,enums,Java,Enums,有没有办法通过从脚本文件(可能是XML或JSON文件)加载和解析数据来定义常量的枚举集 我这样问是因为我在项目中大量使用枚举,它们有很多参数(就像每个条目也可以有10-15个参数),我想给最终用户一种修改它们的方法,而无需修改java源代码和重新编译 我认为这不太可能,因为其中涉及一些静态类型检查,但可能有一种简单的方法可以在编译时预处理文件,并使用这些信息生成静态枚举值。我知道我可以编写一个单独的脚本来完成这项工作,并生成一个准备编译的.java文件输出,但这意味着用户将不得不重新编译整个过程

有没有办法通过从脚本文件(可能是XML或JSON文件)加载和解析数据来定义常量的枚举集

我这样问是因为我在项目中大量使用枚举,它们有很多参数(就像每个条目也可以有10-15个参数),我想给最终用户一种修改它们的方法,而无需修改java源代码和重新编译


我认为这不太可能,因为其中涉及一些静态类型检查,但可能有一种简单的方法可以在编译时预处理文件,并使用这些信息生成静态枚举值。我知道我可以编写一个单独的脚本来完成这项工作,并生成一个准备编译的.java文件输出,但这意味着用户将不得不重新编译整个过程。

否-java中的原语/内置枚举是静态的,因此它们在编译时被处理。您需要创建一个动态标记系统(或自制的动态枚举,如您正在寻找的)来实现这种功能


祝你好运

你不能。枚举本质上是程序员在开发时使用的工具

即使可以在运行时向枚举添加新元素,也没有多大意义,因为它们根本不会被使用。 毕竟,如果enum元素在编译时不存在,这意味着您没有编写任何逻辑来处理该元素。

这是基于C#,所以YMMV。如果必须重构枚举,可以使用复制现有枚举设置的静态方法创建一个类,并从动态加载并使用单独方法访问的Dicitonary中获取新设置。我在C#中做了一些事情(还有这个问题)。如果您是从零开始,我会说——不要依赖枚举。

可能重复的