码迷,mamicode.com
首页 > 编程语言 > 详细

Java中实现序列化的两种方式 Serializable 接口和 Externalizable接口

时间:2016-09-09 11:54:32      阅读:644      评论:0      收藏:0      [点我收藏+]

标签:

 

 

 

 

 

 

 

 

 

方法一:

实现Serializable接口,这个我就不多说了

 

方法二:

实现Externalizable接口:

例子:

package demo;

import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectOutput;

public class XXS implements Externalizable{
    private String name;
    private int age;
    
    
    
    
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public void writeExternal(ObjectOutput out) throws IOException {
        out.writeObject(this);
    }

    public void readExternal(ObjectInput in) throws IOException,
            ClassNotFoundException {
        in.readObject();
    }
}

测试:

import java.io.FileOutputStream;
import java.io.ObjectOutputStream;

public class Demo11 {
    
    public static void main(String[] args) throws Exception {
        XXS xxs=new XXS();
        xxs.setName("你好");
        xxs.setAge(10);
        
        ObjectOutputStream dos=new ObjectOutputStream(new FileOutputStream("xx.txt"));
        dos.writeObject(xxs);
        
        dos.close();
    }

}

 

 

一些api:

Externalizable 实例类的唯一特性是可以被写入序列化流中,该类负责保存和恢复实例内容。 若某个要完全控制某一对象及其超类型的流格式和内容,则它要实现 Externalizable 接口的 writeExternal 和 readExternal 方法。这些方法必须显式与超类型进行协调以保存其状态。这些方法将代替定制的 writeObject 和 readObject 方法实现。

writeExternal(ObjectOutput out)
          该对象可实现 writeExternal 方法来保存其内容,它可以通过调用 DataOutput 的方法来保存其基本值,或调用 ObjectOutput 的 writeObject 方法来保存对象、字符串和数组。

readExternal(ObjectInput in)
          对象实现 readExternal 方法来恢复其内容,它通过调用 DataInput 的方法来恢复其基础类型,调用 readObject 来恢复对象、字符串和数组。

 

ObjectInput:

ObjectInput 扩展 DataInput 接口以包含对象的读操作。DataInput 包括基本类型的输入方法;ObjectInput 扩展了该接口,以包含对象、数组和 String 的输出方法。

 

Java中实现序列化的两种方式 Serializable 接口和 Externalizable接口

标签:

原文地址:http://www.cnblogs.com/aigeileshei/p/5855823.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!