当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:15:00  来源:本站整理

<b>关于Java对象序列化您不知道的5件事</b>[Java编程]

赞助商链接



  本文“<b>关于Java对象序列化您不知道的5件事</b>[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

数年前,当和一个软件团队一同用 Java 语言编写一个利用程序时,我领会 到比普通程序员多知道一点关于 Java 对象序列化的知识所带来的好处.

大约一年前,一个负责管理利用程序全部用户设置的开辟人员,决意将用户 设置存储在一个 Hashtable 中,然后将这个 Hashtable 序列化到磁盘,以便持 久化.当用户更改设置时,便重新将 Hashtable 写到磁盘.

这是一个文雅的、开放式的设置系统,但是,当团队决意从 Hashtable 迁移 到 Java Collections 库中的 HashMap 时,这个系统便面对崩溃.

Hashtable 和 HashMap 在磁盘上的格局是不相同、不兼容的.除非对每个持 久化的用户设置运行某种范例的数据转换实用程序(极端宏大的任务),不然以 后仿佛只能一向用 Hashtable 作为利用程序的存储格局.

团队感到陷入僵局,但这只是因为他们不知道关于 Java 序列化的一个重要 事实:Java 序列化答应随着时间的推移而改变范例.当我向他们展示若何自动 举行序列化替换后,他们终于按筹划完成了向 HashMap 的改变.

本文是本系列的第一篇文章,这个系列专门揭露关于 Java 平台的一些有效 的小知识 — 这些小知识不易理解,但关于办理 Java 编程挑衅早晚有效.

将 Java 对象序列化 API 作为初阶是一个不错的挑选,因为它从一开始就存 在于 JDK 1.1 中.本文介绍的关于序列化的 5 件事情将说服您重新审视那些标 准 Java API.

Java 序列化简介

Java 对象序列化是 JDK 1.1 中引入的一组创始性特点之一,用于作为一种 将 Java 对象的状况转换为字节数组,以便存储或传输的机制,今后,仍可以将 字节数组转换回 Java 对象原有的状况.

实际上,序列化的思惟是 “冻结” 对象状况,传输对象状况(写到磁盘、 通过网络传输等等),然后 “解冻” 状况,重新得到可用的 Java 对象.全部 这些事情的发生有点像是魔术,这要归功于 ObjectInputStream/ObjectOutputStream 类、完好保真的元数据以及程序员愿 意用 Serializable 标识接口标志他们的类,从而 “参与” 这个历程.

清单 1 显示一个实现 Serializable 的 Person 类.

清单 1. Serializable Person

package com.tedneward;

public class Person
   implements java.io.Serializable
{
   public Person(String fn, String ln, int a)
   {
     this.firstName = fn; this.lastName = ln; this.age  = a;
   }

   public String getFirstName() { return firstName; }
   public String getLastName() { return lastName; }
   public int getAge() { return age; }
   public Person getSpouse() { return spouse; }

   public void setFirstName(String value) { firstName =  value; }
   public void setLastName(String value) { lastName =  value; }
   public void setAge(int value) { age = value; }
   public void setSpouse(Person value) { spouse =  value; }

   public String toString()
   {
     return "[Person: firstName=" + firstName +
       " lastName=" + lastName +
       " age=" + age +
       " spouse=" + spouse.getFirstName() +
       "]";
   }

   private String firstName;
   private String lastName;
   private int age;
   private Person spouse;

}


  以上是“<b>关于Java对象序列化您不知道的5件事</b>[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • <b>hosts是什么 hosts文件在什么位置 若何改正hosts</b>
  • <b>在 Windows 8 中手动安装语言包</b>
  • <b>五个常见 PHP数据库问题</b>
  • Windows中Alt键的12个高效快速的利用本领介绍
  • <b>MySQL ORDER BY 的实现解析</b>
  • <b>详解MySQL存储历程参数有三种范例(in、out、inout)</b>
  • <b>Win8系统恢复出来经典的开始菜单的办法</b>
  • <b>Win8系统花屏怎么办 Win8系统花屏的办理办法</b>
  • <b>Windows 7系统下无线网卡安装</b>
  • <b>为什么 Linux不需求碎片整理</b>
  • <b>Windows 8中删除账户的几种办法(图)</b>
  • <b>教你如安在win7下配置路由器</b>
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .