JAVA的序列化与反序列化

java的序列化使用场景
java的序列化思想是通过序列化将对象转换为字节流,然后通过反序列能将字节流翻译为对象。那么java序列化得使用场景是怎样的呢?
1、对象保存在文件中,需要对其序列化反序列化
2、对象在网络通讯中,需要将其转换为字节流在网络中传播,然后通过反序列化在对端将字节流翻译为某个对象
java序列化的实现
若对象需要实现序列化,则需要实现Serializable或者Externalnalizable借口。
java.io.ObjectIoOutput中的writeObject(Object obj)方法实现序列化,将对象序列化为字节流
java.io.ObjectIoInput中的readObject()方法可以将字节流字段反序列化为对象
1、仅仅实现Serializable接口
序列化时:调用默认的writeObject接readObject方法实现序列化
2、不仅实现Serializable接口,同时还重写了writeObject和readObject方法
序列化是:调用重写的writeObject和readObject方法实现序列化
3、实现了Externalnalizable接口则必须定义readExternal()和writeExternal()方法
java序列化的例子

public class Test implements Serializable
{
    private String name;
    private String value;
    public Test(String name, String value)
    {
        this.name = name;
        this.value = value;
    }

    public String getName() {
        return name;
    }

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

    public String getValue() {
        return value;
    }

    public void setValue(String value) {
        this.value = value;
    }
}
public class TestSerializable
{
    Test test = new Test("a", "ba");
    File file = new File("d:\\test.txt");

    //序列化
    FileOutputStream fileOutput = new FileOutputStream(file);
    ObjectOutputStream output = new ObjectOutputStream(fileOutput);
    output.writeObject(test);
    output.flush();
    output.close();
    fileOutput.close();
    //反序列化
    FileOutputStream fileInput = new FileOutputStream(file);
    ObjectOutputStream input = new ObjectOutputStream();
    Test outTest = (Test)input.readObject(file);
    input.close();
    fileInput.close();

}

你可能感兴趣的:(JAVA的序列化与反序列化)