zoukankan      html  css  js  c++  java
  • Java 序列化Serializable

    a)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口;

    b)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化;

    c) static,transient后的变量不能被序列化;

    2、什么情况下需要序列化 
    a)当你想把的内存中的对象保存到一个文件中或者数据库中时候;
    b)当你想用套接字在网络上传送对象的时候;
    c)当你想通过RMI传输对象的时候;

    如果我们想要序列化一个对象,首先要创建某些OutputStream(如FileOutputStream、ByteArrayOutputStream等),然后将这些OutputStream封装在一个ObjectOutputStream中。这时候,只需要调用writeObject()方法就可以将对象序列化,并将其发送给OutputStream记住:对象的序列化是基于字节的,不能使用Reader和Writer等基于字符的层次结构。而反序列的过程(即将一个序列还原成为一个对象),需要将一个InputStream(如FileInputstream、ByteArrayInputStream等)封装在ObjectInputStream内,然后调用readObject()即可。

    序列化:

    MyTest类需要implements Serializable

    ObjectOutputStream oos = new ObjectOutputStream(newFileOutputStream("my.out"));//ObjectOutputStream能把Object输出成Byte流
                MyTest myTest=new MyTest();
                oos.writeObject(myTest);
                oos.flush();  //缓冲流
                oos.close(); //关闭流

    反序列化:

      ObjectInputStream oin = null;//局部变量必须要初始化
            try
            {
                oin = new ObjectInputStream(new FileInputStream("my.out"));
            catch (FileNotFoundException e1)
            {       
                e1.printStackTrace();
            catch (IOException e1)
            {
                e1.printStackTrace();
            }     
            MyTest mts = null;
            try {
                mts = (MyTest ) oin.readObject();//由Object对象向下转型为MyTest对象
  • 相关阅读:
    hreeJS加载Obj资源后如何实现内存释放?
    cookies,sessionStorage 和 localStorage 的区别
    解决ios手机页面overflow scroll滑动很卡的问题
    移动端计算滑动的距离
    设置滚动位置
    css实现右侧固定宽度,左侧宽度自适应
    5.Javascript 原型链之原型对象、实例和构造函数三者之间的关系
    3.说一下你了解的弹性FLEX布局.
    一些面试题 没有答案
    嵌入式开发板和学习推荐平台——最新迅为4412开源硬件开发板
  • 原文地址:https://www.cnblogs.com/yingchen/p/5196151.html
Copyright © 2011-2022 走看看