Serializable 和serialVersionUID 的作用
来源:互联网 发布:matlab矩阵绘制三维图 编辑:程序博客网 时间:2024/05/18 03:22
Serializable 接口的作用
java对象在进行io传输的时候,需要序列化编译成二进制字节码
然后接收到二进制之后反序列化为对象
需要实现该接口才能序列化
ObjectOutPutStream:
代码块 部分 wirteObject
// remaining cases if (obj instanceof String) { writeString((String) obj, unshared); } else if (cl.isArray()) { writeArray(obj, desc, unshared); } else if (obj instanceof Enum) { writeEnum((Enum<?>) obj, desc, unshared); } else if (obj instanceof Serializable) { writeOrdinaryObject(obj, desc, unshared); } else { if (extendedDebugInfo) { throw new NotSerializableException( cl.getName() + "\n" + debugInfoStack.toString()); } else { throw new NotSerializableException(cl.getName()); } }
备注:可以看出对象必须是实现序列化或者枚举、String、数组对象
serialVersionUID 的作用
java对象在进行io传输的时候,序列化的一个版本号,如果反序列化的时候对象的serialVersionUID 与序列化时的serialVersionUID 不一致,会抛出InvalidClassException.
如果不显示提供一个serialVersionUID ,jvm会通过class去计算得到一个serialVersionUID ,应该是根据属性 field来计算的. 我测试中修改属性会造成反序列化对象失败,增加方法等没有改变序列化的uid.
所以显示的写serialVerionUID 可以保证前后版本的兼容以至于在修改代码(属性[ transient也会有影响])之后不会出现invalidClassException
阅读全文
0 0
- Serializable 和serialVersionUID 的作用
- Serializable中serialVersionUID的作用
- Serializable接口serialVersionUID的作用
- Serializable接口中serialVersionUID的作用 示例
- 序列化Serializable serialVersionUID的作用
- Serializable序列化中serialVersionUId的作用
- Serializable 和 serialVersionUID
- serialVersionUID 和 Serializable
- Java Serializable序列化,反序列化 ,serialVersionUID的作用
- 关于Serializable的serialVersionUID
- 关于Serializable的serialVersionUID
- 关于Serializable的serialVersionUID
- 关于Serializable的serialVersionUID
- 关于Serializable的serialVersionUID
- 关于Serializable的serialVersionUID
- 关于Serializable的serialVersionUID
- 什么是serialVersionUID,serialVersionUID的作用
- serialVersionUID的作用和生成方式
- Lingo数据
- vim快捷键介绍
- 一步一步写算法(之排序二叉树)
- windows PHPStudy Apache 配置支持HTTPS
- USCAO-Section 1.3 Barn Repair
- Serializable 和serialVersionUID 的作用
- JAVA面向对象特性
- JDBC(一)
- C++ 单独编译(原型与实现分离)
- Longest Increasing Subsequence
- eclipse启动失败的问题
- 用BroadcastReceiver实现广播的电话拦截
- STL string
- 如果不曾遇到你,那我将会在哪里