一、对象序列化和反序列化存在的意义:

  当你创建对象,只要你需要,他就一直存在,但当程序结束,对象就会消失,但是存在某种情况,如何让程序在不允许的状态,仍然保持该对象的信息。并在下次程序运行的时候使用该信息。

二、Java如何序列化和反序列化

  Java对象的序列化是将那些实现Serializable接口的对象转化成一个字节序列。并在以后将该字节序列完全恢复成对象。该过程可以通过网络进行,这也是序列化机制能够自动弥补不同

操作系统之间的差异:在windows平台上序列化,通过网络传输给Linux系统,进行重新组装。

三、序列化IO流:

  涉及到信息的保存机制就一定与IO流有关,在序列化一个对象时,首先创建OutputStream,然后将其封装到ObjectOutputStream,这是调用writeOject()就可以序列化对象。反序列化是将一个InputStream对象封装到ObjectInputStream中,将字节序列还原为对象。(还原过程中不会调用任何的构造器)

  对象序列化特别聪明的地方就是能够追踪对象包含的所有的引用

四、参考代码:

  序列化:

public byte[] getByteFromObject(Object obj) {
ByteArrayOutputStream output = null;
ObjectOutputStream oop = null;
try {
output = new ByteArrayOutputStream();
oop = new ObjectOutputStream(output);
oop.writeObject(obj);
} catch (IOException e) {
e.printStackTrace();
} finally {
close(oop);
close(output);
} return output.toByteArray();
}

  反序列化:

public Object getObjectFromByte(byte[] bytes) {
ByteArrayInputStream bis = null;
ObjectInputStream ois = null;
Object object = null;
try {
bis = new ByteArrayInputStream(bytes);
ois = new ObjectInputStream(bis);
object = ois.readObject();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
close(ois);
close(bis);
} return object;
}

五:序化化的问题:

  我们进行序列化时。可能不希望将一些敏感的内容序列化,如:密码!!!

  这是我们可以使用transient的关键字进行标记,用来防止敏感对象被序列化。同时,还有另外的一种方法用来进行该操作:Externalizable接口

六、Externalizable接口

  Externalizable接口继承了Serializiable接口,同时添加了两个方法:writeExernal()和readExternal()接口,该方法在序列化和反序列化的时候被自动调用

  Externalizable接口与Serializable接口不同,该接口会调用所有的默认构造器,然后调用readExternal();

Java之对象序列化和反序列化的更多相关文章

  1. Java Io 对象序列化和反序列化

    Java 支持将任何对象进行序列化操作,序列化后的对象文件便可通过流进行网络传输. 1.      对象序列化就是将对象转换成字节序列,反之叫对象的反序列化 2.      序列化流ObjectOut ...

  2. java 对象序列化与反序列化

    Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化  Java序列化是指把Java对象转换为 ...

  3. Java对象序列化与反序列化一 JSON

    Java对象序列化与反序列化一 JSON 1. 依赖库 jackson-all-1.6.1.jar 2. 代码 public class Student {    private String nam ...

  4. Java 序列化 对象序列化和反序列化

    Java 序列化 对象序列化和反序列化 @author ixenos 对象序列化是什么 1.对象序列化就是把一个对象的状态转化成一个字节流. 我们可以把这样的字节流存储为一个文件,作为对这个对象的复制 ...

  5. Java对象序列化和反序列化的工具方法

    import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...

  6. Java对象序列化与反序列化

    对象序列化的目标是将对象保存在磁盘中或者在网络中进行传输.实现的机制是允许将对象转为与平台无关的二进制流. java中对象的序列化机制是将允许对象转为字节序列.这些字节序列可以使Java对象脱离程序存 ...

  7. java中的序列化与反序列化,还包括将多个对象序列化到一个文件中

    package Serialize; /** * Created by hu on 2015/11/7. */ //实现序列化必须实现的接口,这就是一个空接口,起到标识的作用 import java. ...

  8. C#对象序列化与反序列化zz

      C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍........................ ...

  9. C#对象序列化与反序列化

    C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍.......................... ...

随机推荐

  1. .net mvc笔记3_Understanding Razor Syntax

    Understanding Razor Syntax MVC3新视图引擎的名字叫做Razor.ASP.NET视图引擎处理web页面,寻找包含在服务器端指令的特殊元素.正如我们前面已经提到的,标准的AS ...

  2. List<T>到XML的序列化与反序列化

    原文 http://hi.baidu.com/shishengli1234/item/f0536f36335390c22f8ec24b Model.RESE_SCH sch1 = new Model. ...

  3. was配置oracle RAC集群的数据源

    在WebSphere中配置配置Oracle RAC集群的数据源,假设Oracle RAC双击分别为 HOST1 与 HOST2 , 端口为1521 ,服务名为 orcldbservice,则配置的UR ...

  4. oracle rac ha

    ha,仅只是在操作系统层面进行数据库的监控和管理,一般只针对单实例数据库使用.优点是管理方便,应用开发方便(方便了开发商):工程投入较小.缺点是,具有所有单实例数据库的缺点:如:容错能力差,续航能力差 ...

  5. uber奖励和账单详解

    为了让各位车主轻松理解奖励政策和账单明细的核算方法,我们特意制作#奖励详解#的专题文章,保证您五分钟内掌握看懂账单的全部要领和诀窍. 第一部分:收入说明 看到收入说明的账单是不是有些晕呢,来来,我们一 ...

  6. Java图形化界面设计——容器(JFrame)

    Java图形化界面设计——容器(JFrame) 程序是为了方便用户使用的,因此实现图形化界面的程序编写是所有编程语言发展的必然趋势,在命令提示符下运行的程序可以让我们了解java程序的基本知识体系结构 ...

  7. 通过jstack定位在线执行java系统故障_案例1

    问题描写叙述: 在一个在线执行的java web系统中,会定时执行一个FTP上传的任务,结果有一天发现,文件正常生成后却没有上传. 问题初步分析: 1.查看日志文件 发现这个任务仅仅打印了開始进入FT ...

  8. API和DLL

    API API(Application Programming Interface,应用编程接口)其实就是操作系统留给应用程序的一个调用接口,应用程序通过调用操作系统的 API 而使操作系统去执行应用 ...

  9. django datetime format 日期格式化

    django datetime format 日期格式化 www.jx-lab.com python 中 date,datetime,time对象都支持strftime(format)方法,但有一些区 ...

  10. IOS实现UIButton图文混排、自定义按钮按下和正常状态下不同的背景颜色、根据文字长度自定义UIButton长度

    在一些项目中,我们需要自定义自己的UIButton,使Button上面同时具有图片和文字描述,实现自定义UIButton的图文混排. 首先我们需要定义一个继承自UIButton的类,同时实现自己的in ...