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

10-01 18:52
查看更多