Java 序列化的过程是与平台无关的,也就是说一个 Java 对象可以在一个平台上序列化之后传输到另外一个平台上进行反序列化。
需要进行序列化的 Java 类必须实现一个特殊的标记接口——**Serializable**。只有实现了 `java.io.Serializable` 接口的类可以进行序列化/反序列化,其中 `java.io.Serializable` 接口是一个标记接口,标记接口不含有任何成员和方法,标记接口的作用是标记一组类,这些类都具有相同的特定的功能,常见的标记接口还有 Cloneable。
实现 Serializable 接口
一个类的对象要想序列化成功,必须满足两个条件:
(1)该类必须实现 `java.io.Serializable` 对象;
(2)该类的所有属性必须是可序列化的。声明为 `static` 和 `transient` 类型的成员数据不能被序列化。因为 `static` 代表类的状态,`transient` 代表对象的临时数据。
详细代码如下所示:
packagecom.xiaowang.java.serializable; importjava.io.Serializable; /*** 定义一个Student类,实现 Serializable 接口*/publicclassStudentimplementsSerializable { /*** 序列化ID*/privatestaticfinallongserialVersionUID=-7037627544448704690L; privateintid; privateStringname; privateintage; //该属性声明为暂时的,因此不可序列化privatetransientStringsex; publicStudent() { super(); } publicStudent(intid, Stringname, intage, Stringsex) { super(); this.id=id; this.name=name; this.age=age; this.sex=sex; } publicintgetId() { returnid; } publicvoidsetId(intid) { this.id=id; } publicStringgetName() { returnname; } publicvoidsetName(Stringname) { this.name=name; } publicintgetAge() { returnage; } publicvoidsetAge(intage) { this.age=age; } publicStringgetSex() { returnsex; } publicvoidsetSex(Stringsex) { this.sex=sex; } publicStringtoString() { return"id="+id+", name="+name+", age="+age+", sex="+sex; }