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();
}