zoukankan      html  css  js  c++  java
  • 单例模式序列化与反序列化

    package com.wz.thread.resolve;

    import java.io.ObjectStreamException;
    import java.io.Serializable;
    /**
     * 序列化与反序列化
     * @author Administrator
     *
     */
    public class MyObject implements Serializable {
        private static final long serialVersionUID = 6073053711056996533L;
        
        // 内部类的方式
        private static class MyObjectHandler{
            private static final MyObject myObject = new MyObject();
        }
        
        private MyObject() {}
        public static MyObject getInstance() {
            return MyObjectHandler.myObject;
        }
        // 如果没有反序列化,读到的和存的就是两个对象
        protected Object readResolve() throws ObjectStreamException{
            System.out.println("调用了readResolve方法");
            return MyObjectHandler.myObject;
        }

    }

    package com.wz.thread.resolve;

    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.ObjectInputStream;
    import java.io.ObjectOutputStream;

    public class SaveAndRead {
        
        public static void main(String[] args) {
            try {
                MyObject myObject = MyObject.getInstance();
                FileOutputStream fosRef = new FileOutputStream(new File("myObjectFile.txt"));
                ObjectOutputStream oosRef = new ObjectOutputStream(fosRef);
                oosRef.writeObject(myObject);
                oosRef.close();
                fosRef.close();
                System.out.println(myObject.hashCode());
            } catch (Exception e) {
                e.printStackTrace();
            }
            
            try {
                FileInputStream fisRef = new FileInputStream(new File("myObjectFile.txt"));
                ObjectInputStream iosRef = new ObjectInputStream(fisRef);
                MyObject myObject = (MyObject)iosRef.readObject();
                iosRef.close();
                fisRef.close();
                System.out.println(myObject.hashCode());
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

    }

  • 相关阅读:
    selenium的鼠标事件操作
    selenium选择框
    selenium的三种等待方法
    selenium定位方法-iframe元素定位方法
    selenium的元素定位方法-By
    selenium的定位方法-多元素定位
    selenium的定位方法-单元素定位
    GUP架构---显卡(一)
    关于不同开发语言之间,内存(数据or对象)交互之间的一些总结
    tolua中的peer表简单总结
  • 原文地址:https://www.cnblogs.com/wadmwz/p/7822354.html
Copyright © 2011-2022 走看看