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();
            }
        }

    }

  • 相关阅读:
    《构建之法》第8、9、10章的读后感和第一个sprint总结
    实验三 进程调度模拟程序
    构建之法第6、7章的读后感
    实验二 作业调度模拟程序
    0415博客园评价
    0414复利计算6.0-----结对编程
    0408~送给小伙伴的汉堡包
    学习进度条
    Sprint three
    sprint one
  • 原文地址:https://www.cnblogs.com/wadmwz/p/7822354.html
Copyright © 2011-2022 走看看