• 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

  • 相关阅读:
    Linux权限
    Linux用户和用户组操作
    input输入框美化
    Ajax原理一篇就够了
    CSS样式----浮动(图文详解)
    linx系统操作
    文件打包,压缩,解包,解压缩
    Linux学习笔记(一)
    ios 11导航栏替换返回按钮图片,隐藏文字
    swift开发笔记23 BirthDays
  • 原文地址:https://www.cnblogs.com/yhwsy/p/5793164.html
Copyright © 2020-2023  润新知