我有一个分布式系统,具有可序列化的枚举类,其常量可能因系统而异。
由于这些类可能不同,因此可能会在对不存在的常量进行反序列化时调用 valueOf,从而引发运行时异常。
我不相信 valueOf 可以被覆盖,或者在反序列化过程中调用 valueOf 之前插入的另一个自定义方法。
有没有办法避免枚举的这个问题?
最佳答案
主要问题是分布式系统上的枚举内容不一致。最好的办法就是先看看这个。
一种缓解方法是在敏感类中使用 readObject() 方法并捕获由于错误枚举值而导致的异常。
关于Java 枚举和 valueOf 反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3737851/