java.io.Serializable的本质就是将内存的对象,以文本的形式保存到磁盘上,使用的时候再读出来,以减少应用程序的压力.有点类似与虚拟内存.在openJPA里,entity的时候,一般需要使用.
序列化的时候有以下几点需要注意.
1)先序列化,先读取(FIFO);
2)反序列化的时候,返回的都是Object,要自动转换类型;
3)用关键字transient标记的属性,将不被序列化;
4)对象要继承类java.io.Serializable;
5)序列化用ObjectOutputStream,反序列化用ObjectInputStream;
下面是2个示例代码,一看就能明白,本人不做过多的解释^_^
运行结果:
Object is serializing!
phl
Fri Sep 03 19:44:47 CST 2010
name=phl
age=0
序列化的时候有以下几点需要注意.
1)先序列化,先读取(FIFO);
2)反序列化的时候,返回的都是Object,要自动转换类型;
3)用关键字transient标记的属性,将不被序列化;
4)对象要继承类java.io.Serializable;
5)序列化用ObjectOutputStream,反序列化用ObjectInputStream;
下面是2个示例代码,一看就能明白,本人不做过多的解释^_^
- package test;
- import java.io.Serializable;
- public class User implements Serializable {
- private String name;
- private transient int age;
- public User(String name, int age) {
- this.name = name;
- this.age = age;
- }
- public String toString() {
- return "name=" + name + "\n" + "age=" + age;
- }
- }
- package test;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.ObjectInputStream;
- import java.io.ObjectOutputStream;
- import java.util.Date;
- public class TestSerializable {
- public static void main(String[] args) {
- String path = "c:\\myfile";
- serialize(path);
- System.out.println("Object is serializing!");
- deSerialize(path);
- }
- public static void serialize(String fileName) {
- try {
- ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream(fileName));
- out.writeObject("phl");// 序列化字符串对象
- out.writeObject(new Date());// 序列化日期对象
- User user = new User("phl", 26);
- out.writeObject(user);// 序列化自定义对象
- out.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- public static void deSerialize(String fileName) {
- try {
- ObjectInputStream in = new ObjectInputStream(new FileInputStream(fileName));
- String name = (String) in.readObject();
- Date date = (Date) in.readObject();
- User user = (User) in.readObject();
- System.out.println(name);
- System.out.println(date);
- System.out.println(user.toString());
- in.close();
- } catch (FileNotFoundException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- }
- }
- }
运行结果:
Object is serializing!
phl
Fri Sep 03 19:44:47 CST 2010
name=phl
age=0