Java对象的序列化

本文最后更新于:1 年前

1 - 对象序列化

所谓的对象序列化(在某些书籍中也叫串行化),是指在内存之中保存的对象转化为二进制数据流的形式的一种操作。通过将对象序列化,可以方便地实现对象的传输及保存。但是在Java之中并不是所有的类的对象都可以被序列化,如果一个类对象需要被序列化,则此类一定要实现java. io.Serializable接口。但是这个接口里面也没有定义任何的方法,所以此接口依然属于标识接口,表示一种能力。

以上内容,引自<<Java从入门到精通(第二版)>> 张玉宏主编

2 - 具体代码的实现

2.1 需要实现序列化的类

@SuppressWarnings("serial")
class Person implements Serializable{
    private String name;
    private int age;

    public Person(String name, int age){
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString(){
        return "姓名: " + this.name + ", 年龄: " + this.age;
    }
};

2.2 进行序列化测试的主类

public class SerializableDemo {
    public static void main(String[] args) throws Exception{

        String filePath = "D:\\";

        File f = new File(filePath + "SerializablePerson.txt");
        serialize(f);
        deserialize(f);
    }

    // 使用以下方法为序列化对象方法
    public static void serialize(File f)throws Exception{
        OutputStream outputFile = new FileOutputStream(f);
        ObjectOutputStream cout = new ObjectOutputStream(outputFile);
        cout.writeObject(new Person("张三", 25));
        cout.close();
    }

    // 使用以下方法为反序列化对象方法
    public static void deserialize(File f)throws Exception{
        InputStream inputStream = new FileInputStream(f);
        ObjectInputStream cin = new ObjectInputStream(inputStream);
        Person p = (Person)cin.readObject();
        System.out.println(p);
        cin.close();
    }
}

3 - 输出示例

姓名: 张三, 年龄: 25

本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!