我有一个Java枚举,如下所示:
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,其中可能包含这些值以及对枚举值的引用。