java序列化接口Serializable

我们经常遇到Eclipse的一个编译警告:The serializable class XXX does not declare a static final serialVersionUID field of type long,什么是serializable class ?

定义:

       类通过实现 java.io.Serializable 接口以启用其序列化功能。

什么时候需要实现Serializable接口:

       当需要把类写入流中,即保存到一个文件中或者数据库中的时候。api文档中强烈建议所有可序列化类都显式声明 serialVersionUID 值,原因是计算默认的 serialVersionUID 对类的详细信息具有较高的敏感性,根据编译器实现的不同可能千差万别,这样在反序列化过程中可能会导致意外的 InvalidClassException。因此,为保证 serialVersionUID 值跨不同 java 编译器实现的一致性,序列化类必须声明一个明确的 serialVersionUID 值。还强烈建议使用 private 修饰符显示声明 serialVersionUID(如果可能),原因是这种声明仅应用于直接声明类 -- serialVersionUID 字段作为继承成员没有用处。、

如何处理这个警告:

       设置自动生成。在Eclipse中Window>Preferences>Java>Code Style>Clean Up>Missing Code>activate "Add serial version ID" under "Potential programming problems"。

        忽略警告(不建议):在类定义前加上@SuppressWarnings("serial")。

注意事项:如果要手动指定Serializable值,一个类一个值,不能和其他类重复。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值