正常情况下,一个类实现java序列化很简单,只需要implements Serializable接口即可,之后该类在跨jvm 的传输过程中会遵照默认java序列化规则序列化和反序列化;不同jvm 版本之间序列化方式稍有不同,但基本上都是兼容的。在某些特殊情况下,可能需要自定义序列化和反序列化的行为,看下面例子:
Java代码
class AbstractSerializeDemo {
private int x , y;
public void init(int x , int y) {
this.x = x;
this.y = y;
}
public int getX () {
return x;
}
public int getY () {
return y;
}
public void printXY () {
System.out.println("x:" + x + " ;y :" + y );
}
}
public class SerializeDemo extends AbstractSerializeDemo implements
Serializable {
private int z ;
public SerializeDemo() {
super.init(10, 50 );
z = 100 ;
}
public void printZ() {
super.printXY ();
System.out.println("z:" + z );
}
public static void main (String[] args ) throws IOException , ClassNotFoundException
{
ByteArrayOutputStream bos = new ByteArrayOutputStream ();
ObjectOutputStream out = new ObjectOutputStream (bos );
SerializeDemo sd = new SerializeDemo();
sd.printZ ();
out.writeObject (sd);
ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream
(bos.toByteArray ()));
SerializeDemo sd2 = (SerializeDemo ) in.readObject();
sd2.printZ();
}
}
Java自定义序列化行为解析
分享到:
正在招生
友情链接