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

    }

  • 相关阅读:
    CSS选择器实现搜索功能 驱动过滤搜索技术
    js实现倒计时 类似团购网站
    SQL Server系统表sysobjects介绍与使用
    四种开机的奇葩方法 设置定时开机
    sass 使用小记
    flex 弹性布局
    margin padding width height left top right bottom 百分比
    vue中canvas 实现手势密码
    babel-polyfill(解决浏览器不支持es6的问题)和es6-promise(解决不支持promise的问题)
    Ajax fetch axios的区别与优缺点
  • 原文地址:https://www.cnblogs.com/wadmwz/p/7822354.html
Copyright © 2011-2022 走看看