Serializable的本质
来源:互联网 发布:黑社会2以和为贵 知乎 编辑:程序博客网 时间:2024/06/07 11:54
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个示例代码,一看就能明白,本人不做过多的解释^_^
Java代码
- 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;
- }
- }
Java代码
- 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
0 0
- Serializable的本质
- 本质啊本质之一:数据类型的本质
- $的本质
- Serializable 的作用?
- 关于XML的Serializable
- 关于Serializable的serialVersionUID
- serializable 的作用
- Serializable 的必要条件
- 关于Serializable的serialVersionUID
- 关于Serializable的serialVersionUID
- Serializable的作用
- implements Serializable的作用
- Serializable的必要条件
- 关于Serializable的serialVersionUID
- java的Serializable接口
- Serializable的介绍
- serializable的串行化
- Android:Serializable的作用
- 更改eclipse字体大小
- 设计模式
- linux服务器操作日志
- JQuery选择器大全
- AS3(flash)获取MP3音频文件的比特率
- Serializable的本质
- UIApplication sharedapplication用法总结
- 5个你应该知道的建站平台
- git和TortoiseGit的使用
- STS(spring tool suite)中 Alt + / 代码提示功能失效
- jQuery Ajax实例各种使用方法详解
- Sql server中,N''的含义
- Java笔记
- android开发步步为营之13:frame animation实现自动播放和手动播放