Serializable(串行化接口) 串行化是一种存储和取回“活动”对象得机制,也就是说串行化允许你(在需要时)向你得对象添加持续性行为。这种特征用于servlet的通信,也可以用于servlet创建一些由其他程序以后使用的对象。 他的接口时这样的 package java.io public interface Serializable { //there's noting in here }定义中没有方法!该接口只是用于标识可以串行化的类。 通过串行化,你可以将一个对象存储在一个文件中并将他传送给你的朋友,你的朋友就可以精确重建你所存储的对象,并对其进行操作。
java.io.Serializable interface是一个较为特殊的接口: The serialization interface has no methods or fields and serves only to identify the semantics of being serializable 即:它主要是一个用于通知JVM的标志class X implements java.io.Serializable{...}如果你要定制你自己的serializable行为,你应该在X中实现以下2个方法: private void writeObject(java.io.ObjectOutputStream out) throws IOException private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException;否则将按缺省的策略进行。由于上述2个方法是private的,所以在某些情况下,可以使用 java.io.Serializable的子接口java.io.Externalizable, 在这个interface中有2个public方法:public void writeExternal(ObjectOutput out) throws IOExceptionpublic void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
不用可以吗?
Serializable在这里的用途是什么?
是一个标签性质的接口类,用来表明你的类可以串行化。
比如使用对象串行化传输的时候,那就必须实现这个接口(仅仅是个标签,不许写任何实现代码),才能令这个对象实现串行化发送。
该类具有持久性,通过WriteObjcet可将其持久保存在磁盘,在需要时,可用ReadObject从磁盘中读出,次时,对象的状态和存入似的相同。上面给出的列子比较简单,可通过串行化保存一个
链表对象,它的每个节点数据也会被保存。 当然,串行化接口还有其他用途,例如HTTP隧道等
。
串行化是一种存储和取回“活动”对象得机制,也就是说串行化允许你(在需要时)向你得对象添加持续性行为。这种特征用于servlet的通信,也可以用于servlet创建一些由其他程序以后使用的对象。
他的接口时这样的
package java.io
public interface Serializable
{
//there's noting in here
}定义中没有方法!该接口只是用于标识可以串行化的类。
通过串行化,你可以将一个对象存储在一个文件中并将他传送给你的朋友,你的朋友就可以精确重建你所存储的对象,并对其进行操作。
The serialization interface has no methods or fields and serves
only to identify the semantics of being serializable
即:它主要是一个用于通知JVM的标志class X implements java.io.Serializable{...}如果你要定制你自己的serializable行为,你应该在X中实现以下2个方法:
private void writeObject(java.io.ObjectOutputStream out)
throws IOException
private void readObject(java.io.ObjectInputStream in)
throws IOException, ClassNotFoundException;否则将按缺省的策略进行。由于上述2个方法是private的,所以在某些情况下,可以使用
java.io.Serializable的子接口java.io.Externalizable,
在这个interface中有2个public方法:public void writeExternal(ObjectOutput out)
throws IOExceptionpublic void readExternal(ObjectInput in)
throws IOException,
ClassNotFoundException