您的位置:首页 > 编程语言 > Java开发

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

2015-01-01 21:44 246 查看
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;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: