您的位置:首页 > 编程语言 > Java开发

熬之滴水穿石:JAVA的世界(8)

2013-06-03 06:27 344 查看
20--序列化
在JAVA的世界里,让我知道了Serialization这个东东。它的本意就是将被序列化的对象写到文件里,然后我们可以读取出来取出序列化的对象将它还原于本来的状态。这一方法在许多的JAVA框架里被无数次的运用,其实它的原理也很是简单。我们知道对象是具有状态和行为两种属性的,行为是存在类中的,而状态则存于个别的对象中。所以当我们要保存对象状态时就应该应对相应的事件去做相应的事情。我们将序列化的对象写入文件,通常采取流的方式。一般都是以字节方式表示整个被序列化的过程,当然最为重要的是采用所选的方法从而达到链接的作用。在JAVA中类分工明确eg:ObjectOutputStream就是把对象转换成可写入的文件流的数据,而FileOutputSteam来写入文件。这样以不同的组合达到最大的适用应相应的变化。

当对象被序列化时,依附对象身上的实例变量也会跟着序列化。这句话意味着对象上的实例变量所引用的对象也会加入序列化的行列。要让类能够被序列化当然得继承接口,这个接口便是Serializable。我们在序列化对象时都implement后我们的JVM就知道你写的这个类是需要序列化的。对象能够被序列化,当然我们也可以通过Deserialization来反序列化,那就是将序列化的内容还原为对象本身,这个过程也很是有回味的过程。当序列化的对象被还原成对象时,JVM实际上会在堆上创建新的对象,但只是让它维持着被序列化对象当时的状态。该对象的构造函数是不会运行的,它只是等待着赋值让对象回到存储的状态。当然我们在序列化时,可能会出现某些变量我们并不要求进行序列化的操作,我们只需要对该变量声明为transient就可以了,还有一个就是静态变量它是不能被被序列化的。因为所有的对象都是共享一份静态变量值的。
(未完待续...........)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: