Java基础----序列化问题

来源:互联网 发布:js调用android和ios 编辑:程序博客网 时间:2024/05/29 13:56

package com.cug.datastream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.ObjectInputStream;import java.io.ObjectOutputStream;/* * 序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输。对象 -- 流数据(ObjectOutputStream) * 反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象。流数据 -- 对象(ObjectInputStream) */public class ObjectInputStreamDemo {public static void main(String[] args) throws IOException, ClassNotFoundException {//write();read();}private static void write() throws IOException{ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("obj.txt"));Person p = new Person("zhu",21);oos.writeObject(p);oos.close();}private static void read() throws IOException, ClassNotFoundException{ObjectInputStream ois = new ObjectInputStream(new FileInputStream("obj.txt"));Object obj = ois.readObject();ois.close();System.out.println(obj);}}

package com.cug.datastream;import java.io.Serializable;/* * 类通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。 * 该接口居然没有任何方法,类似于这种没有方法的接口被称为标记接口。 */public class Person implements Serializable{/* * Exception in thread "main" java.io.InvalidClassException:  * com.cug.datastream.Person; local class incompatible:  * stream classdesc serialVersionUID = 6071311591162915649,  * local class serialVersionUID = 1971608717899087914 *///加上此句话是为了防止上述错误private static final long serialVersionUID = 6071311591162915649L;private String name;int age;//private transient int age; //transient关键字表示该成员变量不进行序列化public Person() {super();}public Person(String name, int age) {super();this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Person [name=" + name + ", age=" + age + "]";}}



0 0