Java Serializable接口

序列化是把一个对象的状态写入一个字节流的过程
Object?serialization的定义:?
Object?serialization?允许你将实现了Serializable接口的对象转换为字节序列,这些字节序列可以被完全存储以备以后重新生成原来的对象。??

serialization 不但可以在本机做,而且可以经由网络操作(就是RMI)。这个好处是很大的----因为它自动屏蔽了操作系统的差异,字节顺序(用Unix下的c开发过网 络编程的人应该知道这个概念,我就容易在这上面犯错)等。比如,在Window平台生成一个对象并序列化之,然后通过网络传到一台Unix机器上,然后可 以在这台Unix机器上正确地重构这个对象。
Object?serialization主要用来支持2种主要的特性:?
1。Java的RMI(remote?method?invocation).?RMI允许象在本机上一样操作远程机器上的对象。当发送消息给远程对象时,就需要用到serializaiton机制来发送参数和接收返回直。?

2。Java的JavaBeans.?Bean的状态信息通常是在设计时配置的。Bean的状态信息必须被存起来,以便当程序运行时能恢复这些状态信息。这也需要serializaiton机制。
二。持久化
我觉得你们说的应该是英文里的persistence.但是Java语言里现在只支持lightweight?persistence,就是轻量级持久化,这是通过serialization机制来实现的。?

persistence是指一个对象的生命周期不由程序是否执行来决定,即使是在程序终止时这个对象也存在。它把一个serializable的对象写到磁盘(本机或其他机器上的非RAM存储器),并在程序重新调用时再读取对象到通常的RAM存储器。?

为 什么说Java的serialization机制实现的是lightweight?persistence?因为你必须显式的序列化和反序列化程序里的对 象;而不是直接由一个关键词来定义一个对象是序列化的然后由系统做相应的处理。??如果以后的Java版本出现一个新的关键字来实现这种机制,比如就是 persistence,如果我用?

persistence??(String?s="chinaunix")?

然后系统自动做猫小程序里的那些处理,那么Java就实现了persistence.?
它执行RMI,RMI允许一台机器上的JAVA对象调用不同机器上的JAVA对象方法,对象可以作为参数提供给那个远程方法,发送机序列化该对象并传送它,接收机执行反序列化。?
序列化和反序列化的关系图表可形成包含循环引用的顺序图表。这是整个序列化的总体思想。?
而Serializable接口属于支持序列化的一个接口,只有一个实现它的对象可以被序列化工具存储和回复,Serializable接口没有定义任何成员,只用来表示一个类可以被序列化,若该类可以序列化,那么它的所有子类都可以。?
下面是关于序列化的一个实例:?
package cn.itwoody.serialization;

import java.io.Serializable;

public class MyClass implements Serializable {

???
??? private static final long serialVersionUID = 1L;
???
??? String s;
??? int i;
??? double d;
??? public MyClass(String s,int i,double d){
??? ??? this.s=s;
??? ??? this.i=i;
??? ??? this.d=d;
??? }
??? public String toString(){
??? ??? return "s="+s+";i="+i+";d="+d;
??? }
???
}

package cn.itwoody.serialization;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class SerializationDemo {

???
??? public static void main(String[] args) throws IOException, ClassNotFoundException {
??? ??? MyClass object1=new MyClass("Hello",-7,2.7e10);
??? ??? System.out.println("object1:"+object1);
??? ??? FileOutputStream fos=new FileOutputStream("serial.txt");
??? ??? ObjectOutputStream oos=new ObjectOutputStream(fos);
??? ??? oos.writeObject(object1);
??? ??? oos.flush();
??? ??? oos.close();
??? ??? MyClass object2;
??? ??? FileInputStream fis=new FileInputStream("serial.txt");
??? ??? ObjectInputStream ois=new ObjectInputStream(fis);
??? ??? object2=(MyClass) ois.readObject();
??? ??? ois.close();
??? ??? System.out.println("object2:"+object2);
??? }

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
系统根据B/S,即所谓的电脑浏览器/网络服务器方式,运用Java技术性,挑选MySQL作为后台系统。系统主要包含对客服聊天管理、字典表管理、公告信息管理、金融工具管理、金融工具收藏管理、金融工具银行卡管理、借款管理、理财产品管理、理财产品收藏管理、理财产品银行卡管理、理财银行卡信息管理、银行卡管理、存款管理、银行卡记录管理、取款管理、转账管理、用户管理、员工管理等功能模块。 文中重点介绍了银行管理的专业技术发展背景和发展状况,随后遵照软件传统式研发流程,最先挑选适用思维和语言软件开发平台,依据需求分析报告模块和设计数据库结构,再根据系统功能模块的设计制作系统功能模块图、流程表和E-R图。随后设计架构以及编写代码,并实现系统能模块。最终基本完成系统检测和功能测试。结果显示,该系统能够实现所需要的作用,工作状态没有明显缺陷。 系统登录功能是程序必不可少的功能,在登录页面必填的数据有两项,一项就是账号,另一项数据就是密码,当管理员正确填写并提交这二者数据之后,管理员就可以进入系统后台功能操作区。进入银行卡列表,管理员可以进行查看列表、模糊搜索以及相关维护等操作。用户进入系统可以查看公告和模糊搜索公告信息、也可以进行公告维护操作。理财产品管理页面,管理员可以进行查看列表、模糊搜索以及相关维护等操作。产品类型管理页面,此页面提供给管理员的功能有:新增产品类型,修改产品类型,删除产品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值