处理枚举序列化的最佳实践

Best practice to deal with serialization of enum

众所周知,在项目中使用枚举时会出现一些序列化问题,尤其是将代码部署到集群时:

因为我们无法在一秒钟内完成部署,一些已部署的服务器可能会将新项目写入会话,而另一个可能会读取它并发生反序列化异常。

我的问题是

  1. 处理此类问题的最佳做法是什么?
  2. 是否有语法糖或其他东西可以在运行时将枚举转换为 String 以避免这种情况。为什么不呢?

As we know, there will be some serialization problem when we use enum in a project, especially for deploying the code to a cluster:

我什么都不知道。

Since we can't finish deploy in a second, some deployed server could write a new item to a session, while the other may read it and occur deserialization exception.

无论枚举如何,这都是一个问题。除非管理得当,否则对 class 的任何更改都可能引发这种情况。

What's the best practice to deal with such a problem?

与任何其他 class 相同。 (1) 避免改变 (2) 当你不能改变时,小心管理它。

Is there a syntactic sugar or sth else for enum to be casted as String during runtime to avoid this.

没有

Why not?

我不想代表 Java 作者,但序列化下的版本控制已经非常明确。

如果您打算向枚举添加值,也许您应该改用数据库 table。