黑马程序员技术交流社区

标题: 序列化接口的id有什么用? [打印本页]

作者: 余耀明    时间: 2012-4-22 13:04
标题: 序列化接口的id有什么用?
序列化接口的id有什么用?
作者: 乞文超    时间: 2012-4-22 13:30
当某个类需要存到文件或者通过网络传输的话
就必须实现此接口
否则的话,在你存到文件时或者传输的时候就会报没有实现此接口的异常!
作者: 李蛟龙    时间: 2012-4-22 14:02
把Java对象转换为字节序列的过程称为对象的序列化。

把字节序列恢复为Java对象的过程称为对象的反序列化。

  对象的序列化主要有两种用途:

  1) 把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;

  2) 在网络上传送对象的字节序列。
序列化接口的ID作为一个标签,用来确认在序列化与反序列化中操作同一版本的对象的IO流,从而保证数据的准确性。例如字节码的使用,为了确保编码者与应用者用的是同一字节码表,ID给出提示。

实现序列化的方式:实现Serializable和Externalizable接口。Externalizable接口继承自Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以采用默认的序列化方式 。






作者: 陈坚    时间: 2012-4-22 14:51
序列化ID 的作用:
虚拟机是否允许反序列化,不仅取决于类路径和功能代码是否一致,一个非常重要的一点是两个类的序列化 ID 是否一致(就是 private static final long serialVersionUID = 1L,虽然两个类的功能代码完全一致,但是序列化 ID 不同,他们无法相互序列化和反序列化。
序列化 ID 在 Eclipse 下提供了两种生成策略,一个是固定的 1L,一个是随机生成一个不重复的 long 类型数据(实际上是使用 JDK 工具生成),在这里有一个建议,如果没有特殊需求,就是用默认的 1L 就可以,这样可以确保代码一致时反序列化成功。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2