关于Java对象序列化您不知道的5件事
文章出处: http://java.chinaitlab.com/base/807715.html
Java对象序列化是JDK1.1中引入的一组开创性特性之一,之前51CTO也曾介绍过Java序列化的机制和原理,这里我们将使用Person来发现您可能不知道的关于Java对象序列化的5件事。
实际上,序列化的思想是“冻结”对象状态,传输对象状态(写到磁盘、通过网络传输等等),然后“解冻”状态,重新获得可用的Java对象。所有这些事情的发生有点像是魔术,这要归功于ObjectInputStream/ObjectOutputStream类、完全保真的元数据以及程序员愿意用Serializable标识接口标记他们的类,从而“参与”这个过程。清单1显示一个实现Serializable的Person类。
1.清单1.SerializablePerson
2.packagecom.tedneward;
3.
4.publicclassPerson
5.implementsjava.io.Serializable
6.{
7.publicPerson(Stringfn,Stringln,inta)
8.{
9.this.firstName=fn;this.lastName=ln;this.age=a;
10.}
11.
12.publicStringgetFirstName(){returnfirstName;}
13.publicStringgetLastName(){returnlastName;}
14.publicintgetAge(){returnage;}
15.publicPersongetSpouse(){returnspouse;}
16.
17.publicvoidsetFirstName(Stringvalue){firstName=value;}
18.publicvoidsetLastName(Stringvalue){lastName=value;}
19.publicvoidsetAge(intvalue){age=value;}
20.publicvoidsetSpouse(Personvalue){spouse=value;}
21.
22.publicStringtoString()
23.{
24.return"[Person:firstName="+firstName+
25."lastName="+lastName+
26."age="+age+
27."spouse="+spouse.getFirstName()+
28."]";
29.}
30.
31.privateStringfirstName;
32.privateStringlastName;
33.privateintage;
34.privatePersonspouse;
35.
36.}
将Person序列化后,很容易将对象状态写到磁盘,然后重新读出它,下面的JUnit4单元测试对此做了演示。
37.清单2.对Person进行反序列化
38.publicclassSerTest
39.{
40.@TestpublicvoidserializeToDisk()
41.{
42.try
43.{
44.com.tedneward.Personted=newcom.tedneward.Person("Ted","Neward",39);
45.com.tedneward.Personcharl=newcom.tedne
相关文档:
CREATE OR REPLACE FUNCTION F_HPS_SPLIT
/*
* 功 能: split.
* 输入参数: Liststr string
* 输入参数: Sepe index
* 输入参数: Sepe separator. default is ','.
* return sepeCount
*/
(
......
mysql数值范围
tinyint -128~127 0~255
smallint -32768~32767 0~65535
mediumint -8388608~8388607 0~16777215
int -2147483648~2147483647 0~4294967295
bigint -9223372036854775808~9223372036854775807 0~18446744073709551615
java中
byte ......
自从上次写了二分法查找代码后突然打算好好学习一下数据结构.买了一本数据结构与算法......
import java.util.Random;
/**
*
* @author leon.lee
*/
public class BubbleSort {
private int[] arrayData;
public void printArrayList(){
if (arrayData!=null){
for(int i:a ......
十四种Java开发工具点评
在计算机开发语言的历史中,从来没有哪种语言象Java那样受到如此众多厂商的支持,有如此多的开发工具,Java菜鸟们如初入大观园的刘姥姥,看花了眼,不知该何种选择。的确,这些工具各有所长,都没有绝对完美的,就算是老鸟也很难做出选择。在本文中我简要介绍了常见的十五种Java开发工具的 ......