Java序列化

序列化的意义:


 

首先根据我的理解,介绍下Java序列化是什么,Java序列化是为了让一个对象能够持久化的机制,也就是Java为了让对象能够保存到磁盘、其他jvm虚拟机的解决办法,为什么对象要序列化之后才能够保存,因为对象中的属性信息是保存在JVM虚拟机内存中的,当你想把一个对象保存到别的地方你必须保证这个对象的一些信息能够恢复,这个过程叫反序列化。

 1.java 中怎样让一个类可序列化


 

要想让一个类的对象能够序列化创建类的时候要实现Serializable这个接口,这只是一个标记接口,这个接口中没有要实现的方法,只是标记这个类可以序列化。

例子:

import java.io.Serializable;

public class People implements Serializable{

	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;//这个一个序列ID,不写也没关系
	String name ;
	int age;
	String phoneNum;
	
	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;
	}
	public String getPhoneNum() {
		return phoneNum;
	}
	public void setPhoneNum(String phoneNum) {
		this.phoneNum = phoneNum;
	}
	
	
	
}

2.保存一个对象到文件中的例子


 

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

public class STest {

	public static void main(String[] args) {
		People rhq = new People();
		rhq.setName("rhq");
		rhq.setAge(25);
		rhq.setPhoneNum("15688888888");

		File f = new File("D://rhq.txt");

		try {
			if (!f.exists()) {
				f.createNewFile();
			}
			ObjectOutputStream ob = new ObjectOutputStream(
					new FileOutputStream(f));
			ob.writeObject(rhq);
			ob.close();
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

 

如果要保存的对象不能够序列化,即没有实现Serializable这个接口会报如下错误:

java.io.NotSerializableException: com.rhq.seri.People
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1180)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:346)
at com.rhq.seri.STest.main(STest.java:31)

 

posted @ 2015-05-26 16:05  renhq  阅读(209)  评论(0编辑  收藏  举报