我有一个
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 }
我看到在反序列化后,枚举上的自定义字段丢失了.
在阅读更多相关内容时,我得到的印象是枚举被反序列化为字符串,因此其自定义字段将被忽略.
如果是真的,我在这里滥用Enum&应该只使用POJO?
或者有没有办法序列化自定义字段(不是构造函数的一部分)?
谢谢!
解决方法
如果值是常量,则更好,您不需要序列化任何内容
public enum ExecutionMode { TYPE_A(x,t),TYPE_B(y,z),TYPE_C(b,s) private boolean incremental; //has get/set private String someStr; //has get/set ExecutionMode(boolean incremental,String someStr){ ///... set things appropriately } }
如果你在运行时设置这些值,我倾向于首先不应该是枚举 – 应该有一个单独的POJO,它可能包含值以及对枚举值的引用.