djxchen
BlogJava
::
首页
::
联系
::
聚合
::
管理
4 Posts :: 3 Stories :: 3 Comments :: 0 Trackbacks
常用链接
我的随笔
我的评论
我的参与
最新评论
留言簿
(1)
给我留言
查看公开留言
查看私人留言
我参与的团队
随笔档案
(4)
2008年10月 (2)
2008年4月 (2)
文章分类
(1)
java
java ee(1)
文章档案
(3)
2008年6月 (2)
2008年4月 (1)
java
搜索
最新评论
1. re: include与jsp:include区别
好厉害
--WW
2. re: include与jsp:include区别
评论内容较长,点击标题查看
--唐林峰
3. re: include与jsp:include区别[未登录]
解释的好清楚阿,厉害。
--dd
阅读排行榜
1. include与jsp:include区别(571)
2. get post 区别(361)
3. java中的Serializable接口的作用(245)
4. static(引用)(222)
评论排行榜
1. include与jsp:include区别(3)
2. static(引用)(0)
3. java中的Serializable接口的作用(0)
4. get post 区别(0)
java中的Serializable接口的作用
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机制。
二。sakulagi和rollingpig说的持久化我也说一下。
我觉得你们说的应该是英文里的persistence.但是Java语言里现在只支持lightweight persistence,就是轻量级持久化,这是通过serialization机制来实现的。
persistence是指一个对象的生命周期不由程序是否执行来决定,即使是在程序终止时这个对象也存在。它把一个serializable的对象写到磁盘(本机或其他机器上的非RAM存储器),并在程序重新调用时再读取对象到通常的RAM存储器。
为什么说Java的serialization机制实现的是lightweight persistence?因为你必须显式的序列化和反序列化程序里的对象;而不是直接由一个关键词来定义一个对象是序列化的然后由系统做相应的处理。
下面是关于序列化的一个实例:
程序名称:SerializationDemo.java
程序主题:实现对象的序列化和反序列化
程序说明:该程序由实例化一个MyClass类的对象开始,该对象有三个实例变量,类型分别为String、int、double,是希望存储和恢复的信息。
代码内容
import
java.io.
*
;
public
class
SerializationDemo
{
public
static
void
main(String args[])
{
//
Object serialization
try
{
MyClass object1
=
new
MyClass(
"
Hello
"
,
-
7
,
2.7e10
);
System.out.println(
"
object1:
"
+
object1);
FileOutputStream fos
=
new
FileOutputStream(
"
serial
"
);
ObjectOutputStream oos
=
new
ObjectOutputStream(fos);
oos.writeObject(object1);
oos.flush();
oos.close();
}
catch
(Exception e)
{
System.out.println(
"
Exception during serialization:
"
+
e);
System.exit(
0
);
}
//
Object deserialization
try
{
MyClass object2;
FileInputStream fis
=
new
FileInputStream(
"
serial
"
);
ObjectInputStream ois
=
new
ObjectInputStream(fis);
object2
=
(MyClass)ois.readObject();
ois.close();
System.out.println(
"
object2:
"
+
object2);
}
catch
(Exception e)
{
System.out.println(
"
Exception during deserialization:
"
+
e);
System.exit(
0
);
}
}
}
class
MyClass
implements
Serializable
{
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;
}
}
程序运行结果:object1和object2的实例变量是一样的,输出如下:[code:1:a55efb5f91]object1:s=Hello;i=-7;d=2.7E10
object2:s=Hello;i=-7;d=2.7E10
posted on 2008-10-11 22:16
于元
阅读(245)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
管理
Copyright @ 于元
Powered by:
.Text
and
ASP.NET
Theme by:
.NET Monster