加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java enum上的自定义字段未被序列化

发布时间:2020-12-14 23:58:34 所属栏目:Java 来源:网络整理
导读:我有一个 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} 我看到在反序列
我有一个 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,它可能包含值以及对枚举值的引用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读