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

Java Serializable序列化,反序列化

2016-03-07 16:31 429 查看
Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。如此可以把对象转换成字节流,可以进行网络传输,保持到本地文件,数据库等,增加对象的生命周期。

序列化针对的对象的数据,也就是字段属性,使用transient关键字可以使字段不被序列化。

序列化实现非常简单,只需要对象继承serializable接口就行。serializable是一个空接口,没有任何方法。类似的接口还有重写clone方式要用到的cloneable接口。这些接口都是标志型接口。

对象的保存和读取用到java.Io里的ObjectInputStream和ObjectOutputStream

public class Main {
	public static void main(String arg[]){
		Person p=new Person("xjp",50);
		savePerson(p);
		p=getPerson();
		p.print();
	}
	static void savePerson(Person p){
		FileOutputStream fout;
		try {
			fout = new FileOutputStream("e:\\person.txt");
			ObjectOutputStream objout=new ObjectOutputStream(fout);
			objout.writeObject(p);
			objout.close();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	static Person getPerson(){
	
		FileInputStream fin;
		try {
			fin = new FileInputStream("e:\\person.txt");
			ObjectInputStream objin=new ObjectInputStream(fin);
			Person p=(Person)objin.readObject();
			objin.close();
			return p;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
		
	}
}
class Person implements Serializable {
	private String name;
	private int age;
	Person(String s,int a){
		name=s;
		age=a;
	}
	public String getName() {
		return name;
	}
	public int getAge() {
		return age;
	}
	public void print(){
		System.out.println("name:"+name);
		System.out.println("age:"+age);
	}
	
}
输出:

name:xjp

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