java对象的序列化与反序列化(测试说明)

来源:互联网 发布:大学生就业it培训班 编辑:程序博客网 时间:2024/05/19 18:00

java中对象与字节码的转换称为序列化和饭序列化

应用:将java 对象写入文件

           将java对象在网络上进行传输

下面展示测试代码:


执行结果:
java 对象存储完成
java 对象读取完成
Wade

当java bean中没有显示设置序列号,如果java对象的属性有改变(增加,减少等),这时会导致对于这个对象生成不同的序列号。如果在java bean属性改变之前将实例存入文件,在属性发生改变之后,读取之前存储的实例,这时会出现报错,见如下测试:

Exception in thread "main" java.io.InvalidClassException: com.wade.Person; local class incompatible: stream classdesc serialVersionUID = 2329171088176088046, local class serialVersionUID = -1730403105289999678
at java.io.ObjectStreamClass.initNonProxy(ObjectStreamClass.java:617)
at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1622)
at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1517)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1771)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1350)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:370)
at com.wade.Test.readData(Test.java:33)
at com.wade.Test.main(Test.java:48)

这是由于两次的序列号不匹配导致。





0 0
原创粉丝点击