森林里的程序猿三木 2019-10-10 23:52 采纳率: 0%
浏览 158

序列化单例和类型安全的枚举

在看书,JAVA核心技术卷二里的一节内容
有下面一段枚举类型:

 public class Orientation
    {
        public static final Orientation HORIZONTAL = new Orientation(1);
        public static final Orientation VERTICAL = Orientation(2);
        private int value;
        private Orientation(int v)
        {
            value = v;
        }
    }


         Orientation original = Orientation.HORIZONTAL;
       ObjectOutputStream out = new ObjectOutputStream(,,,);
        out.write(original);
        out.close();
        ObjectInputStream in = new ObjectInputStream(...);
        Orientation saved = (Orientation) in.read();

这里说序列化创造了新的对象,saved的值就是Orientation类型一个全新的对象,那么为什么不可将读入流in中的Orientatio读入,等号后还有和意义,还是说读出流out中或者读入流in中根本就没有这个对象。
初学者,谢谢各位传道解惑

  • 写回答

1条回答 默认 最新

  • 毕小宝 博客专家认证 2019-10-11 08:56
    关注

    序列化后重新读取到内存中的实例对象的确跟之前的对象不是同一个实例对象了,这也是单例对象的一个漏洞,单例对象通过序列化到磁盘后反序列化得到了一个新对象后,内存中就多了一个单例类型的实例,而打破单例的唯一性了。

    评论

报告相同问题?

悬赏问题

  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料