zoukankan      html  css  js  c++  java
  • java学习笔记 对象序列化

    对象序列化就是把一个对象变为二进制数据流的一种方法。如果一个类的对象想被序列化,它要实现Serializable接口,这个接口是个标识接口(只定义了接口,并没有定义方法),表示这个对象具有被序列化的能力。

    实现Serializable接口之后,表示这个类具有被数据流传输的能力,如果想进行输入和输出,要使用两个类:ObjectOutputStream 和 ObjectInputStream

    序列化时,只有属性被序列化

    如果一个对象的某个属性不希望被序列化,可以使用transient关键字声明(把这个属性当成透明,在序列化时不予考虑)。

    Serializable接口使用:

    import java.io.*;
    
    public class Test {
        public static void main(String[] args)throws Exception {
            try{    
                ObjectOutputStream oos = null;
                ObjectInputStream ois = null;
                File f = new File("e:\java\Person.txt");
                OutputStream os = new FileOutputStream(f);
                InputStream is = new FileInputStream(f);
                oos = new ObjectOutputStream(os);
                ois = new ObjectInputStream(is);
                
                Person p1 = new Person(23,"宝宝",180.00);
                oos.writeObject(p1);
                oos.close();
                Person p2 = (Person)ois.readObject();
                ois.close();
              System.out.println(p2);        
            }catch(IOException e) {
                e.printStackTrace();    
            }
        }    
    }
    
    class Person implements Serializable {
        int age = 8;
        String name;
        transient double height = 170;//transient声明的变量在序列化时不予考虑,所以在反序列化时就是默认值0
        
        Person(int age,String name,double height) {
            this.age = age;
            this.name = name;
            this.height = height;
        }    
        
        public String toString() {
            return "姓名:" + this.name + "  年龄:" + this.age + "  身高:" + this.height;    
        }
    }
    r1

    r2

  • 相关阅读:
    python的内置方法 isinstance && issubclass
    python类的内置方法
    反射(python内置方法)
    类装饰器 @property
    多态与多态性
    组合(对象1.属性=对象2)
    类的封装
    多继承 mro 继承顺序 与 菱形继承(钻石继承)
    类的继承派生&&重写
    封装 继承 多态 派生 组合定义 && 对象之间交互
  • 原文地址:https://www.cnblogs.com/yhwsy/p/5793164.html
Copyright © 2011-2022 走看看