java serialization

 

 

 

just take notes to 'discover the secrets of java serialization.

http://java.sun.com/developer/technicalArticles/Programming/serialization/

 

Default Mechanism:

Rule #1: The object to be persisted must implement the Serializable interface or inherit that implementation from its object hierarchy.

to actually persist the object, use ObjectOutputStream.writeObject();

 

Nonserializable object:

when a field we don't want to serialize, e.g, thread, OutputStream, socket, follow the rules:

Rule #2: The object to be persisted must mark all nonserializable fields transient

 

Customize the protocol

when want to recover the state like thread, can use this:

  • private void writeObject(ObjectOutputStream out) throws IOException;
  • private void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException;

Create your own protocol

you can implement Externalizable interface to build your own protocol

  • public void writeExternal(ObjectOutput out) throws IOException;
  • public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException;

Version Control

all persistent-capable classes are automatically given a unique identifier. The identifier that is part of all classes is maintained in a field called serialVersionUID . If you wish to control versioning, you simply have to provide the serialVersionUID field manually and ensure it is always the same, no matter what changes you make to the classfile.

The version control works great as long as the changes are compatible. Compatible changes include adding or removing a method or a field. Incompatible changes include changing an object's hierarchy or removing the implementation of the Serializable interface. A complete list of compatible and incompatible changes is given in the Java Serialization Specification.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值