A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 余耀明 中级黑马   /  2012-4-22 13:04  /  4540 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

序列化接口的id有什么用?

3 个回复

倒序浏览
当某个类需要存到文件或者通过网络传输的话
就必须实现此接口
否则的话,在你存到文件时或者传输的时候就会报没有实现此接口的异常!
回复 使用道具 举报
把Java对象转换为字节序列的过程称为对象的序列化。

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

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

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

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

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





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