,发生一些情况导致反序列化对象无法获取数据eg:类的某些实例域默认值违反了约束条件时使用
一些专门为了继承的类不是可序列化的,就不可能编写出可序列化的子类,如果超类没有提供可访问的无参构造器,子类也不可能被序列化...将实例受控的类编写成枚举,JVM对此提供了保障.用readResolve进行实例控制并不过时
考虑使用序列化代理代替序列化实例
序列化代理,一个私有的静态嵌套类精确地表示外围类的实例的逻辑状态,它应该有个单独的构造器...非空性(x.equals(null)==false)
无法在扩展可实例化类的的同时,既增加新的值组件,同时又保留equals约定,除非愿意放弃面向对象所带来的优势....,同一层级和书写顺序有关
总结:枚举易读安全功能强大,1.每个常量与属性关联,1.提供行为受这个属性影响的方法,3.策略枚举
用实例域代替序数
永远不要根据枚举的序数导出与它关联的值,而是保存在一个实例域中...null,如果对象将在缺少外部同步的情况下被并发访问那么返回可识别的值是必要的,从性能的角度考虑可识别>状态测试,其余情况应当使用状态测试
对于可恢复的情况使用受检异常,对编程错误使用运行时异常
受检异常