我有一个 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 istead? 或者有没有办法序列化自定义字段(不属于构造函数的一部分)?
谢谢!
最佳答案
如果值是常量,这样更好,你不需要序列化任何东西
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,它可能包含这些值以及对枚举值的引用.
关于java - java 枚举上的自定义字段未被序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15529490/