我有一个Java Enum,如下所示:
public enum ExecutionMode {
TYPE_A,
TYPE_B,
TYPE_C;
private ExecutionMode(){} //no args constr- no really required
private boolean incremental; //has get/set
private String someStr; //has get/set
}
Run Code Online (Sandbox Code Playgroud)
我看到在反序列化后,枚举上的自定义字段丢失了.在阅读更多相关内容时,我得到的印象是枚举被反序列化为字符串,因此其自定义字段将被忽略.
如果是真的,我在这里滥用Enum并且应该只使用POJO吗?或者有没有办法序列化自定义字段(不是构造函数的一部分)?
谢谢!
是否可以在 EMF Ecore 模型中进行枚举实现接口?在 Java 中可能有类似 : 的东西public enum MyEnum implements MyInterface。我希望能够通过 EMF 生成这样的东西(顺便说一句,似乎默认情况下所有由 EMF 生成的枚举实现org.eclipse.emf.common.util.Enumerator)。
我找不到让我生成的枚举实现特定接口的方法。我无法在 ecore 图编辑器中定义与枚举的继承关系,也无法在 ecore 模型编辑器中定义继承关系。我可以implements在生成代码后手动将位添加到枚举中,但是每次我再次生成代码时它都会被覆盖。
或者,有没有办法让implements(并且只有它)不被 EMF 的代码生成覆盖?
我知道我可以修改@generated类 javadoc 注释中的标记,@generatedNOT以便代码生成器知道它不能覆盖类,但是当我修改模型时它会阻止类被更新。
现在我所做的是implements每次修改模型中的枚举时手动添加,并@generatedNOT在其余时间保留标签。我觉得这会在几个月后变得危险,当我忘记它时,或者更糟的是,当其他人试图修改它时,即使有适当的记录。
有点相关:EMF Eclipse: enumeration with custom fields (properties)