java - java 枚举上的自定义字段未被序列化

标签 java serialization enums custom-fields

我有一个 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/

相关文章:

java - 让java在方法之间等待

java - 如何用动画改变 FrameLayout 的前景可绘制的 alpha?

javascript - 输入类型文件不序列化 jquery

python - Django 休息 : Uploading and serializing multiple images

Java模式的使用

java - ftp 上的同时连接数

c# - 反序列化 Json C# 检查是否列表

c - C中的结构数组索引

java - 具有相同方法的多个 Java 8 枚举

java - 如何从枚举创建下拉菜单?