关于实现序列化的类提示没有定义serialVersionUID域

The serializable class XXX does not declare a static final serialVersionUID field of type long

serialVersionUID作用:
序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。

你可以随便写一个,在Eclipse中它替你生成一个,有两种生成方式:
一个是默认的1L,比如:private static final long serialVersionUID = 1L;
一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:private static final long serialVersionUID = -8940196742313994740L;之类的。

当你一个类实现了Serializable接口,如果没有定义serialVersionUID,Eclipse会提供这个提示功能告诉你去定义之。
在Eclipse中点击类中warning的图标一下,Eclipse就会自动给定两种生成的方式,如上面所述。如果不想定义它,在Eclipse的设置中也可以把它关掉的,设置如下:
Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==> Potential programming problems
将Serializable class without serialVersionUID的warning改成ignore即可。

如果你没有考虑到兼容性问题时,就把它关掉,不过有这个功能是好的,只要任何类别实现了Serializable这个接口的话,如果没有加入serialVersionUID,Eclipse都会给你warning提示,这个serialVersionUID为了让该类别Serializable向后兼容。

如果你的类Serialized存到硬盘上面后,可是后来你却更改了类别的field(增加或减少或改名),当你Deserialize时,就会出现Exception的,这样就会造成不兼容性的问题。

但当serialVersionUID相同时,它就会将不一样的field以type的预设值Deserialize,这个可以避开不兼容性的问题。

JDK 序列化 serialVersionUID应用 通常,RPC调用有多种序列化方式,本文简单介绍一下JDK自带的序列化接口Serializable使用事项。一、serialVersionUID一般实现Serializable接口的序列化对象会要求声明一个long型的serialVersionUID(非强制,不写会有默认值),该变量有何用?1、序列化操作时,系统会把当前声明的serialVersionUID写入到序列化文件中,用于反序列化时系统会... 阅读详情

相关推荐

SAP 零售 FMS 物料主数据(一)

SAP 零售 FMS 物料主数据(一) SAP 对于鞋服行业最新的解决方案-FMS(相当于原来的AFS+Retail);更偏向与零售; 商品主数据与原来的AFS大不相同,取消了原来的Grid的网格概念,取而代之的是变式;商品主数据维护也偏向于Retail的维护模式;事物代码也不是MM01而是MM41 /MM46; 在维护商品主数据前,需要与商品部沟通定义各种商品相关的规范如编码规则,大中小 ,颜色库,尺码库等,此处不赘述; 创建商品需要确定哪些物料是变式物料,哪些是常规不带特性的单一物料;这决定了在创建商

weixin_45518759的博客 5031

解决办法:The serializable class XXX does not declare a static final serialVersionUID field of type long

今天在写java的时候遇到了一个警告,我自定义了一个异常,继承Exception,然后eclipse就报警告了,这里说一下解决方法。 警告内容:The serializable class XXX does not declare a static final serialVersionUID field of type long 这个警告一般来讲不影响程序的运行,它的意思是:序列化XXX 没...

嵌入式Linux充电站 1万+

基于matlab的CNN物体识别物体分系统

主要对物体进行识别,搭建一个物体分系统本次实验选择规模稍大的 CIFAR-10 数据集进行分识别,对应图像的大小设计 VggNet、ResNet 进行网络训练。在实际操作过程中,受限于数据规模和硬件配置,对于大小放缩、批次参数、训练步数等进行了多次调试,这也对以后的图像分任务具有较高的参考意义,并通过对 CIFAR-10 数据集进行训练和评测,采用网络修改的方式来得到新的 CNN 结构,适用于对网络进行配置、融合等相关研究。读者可以通过自行设计或选择其他网络、加载其他数据等方式进行实验的延伸。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 1969

关于"the serializable class XXXXXXXX does not declare a static final seriaVersionUID field of type long"

<br />对于“the serializable class XXXXXXXX  does not declare a static final seriaVersionUID field of type long”的警告<br />系统一直会提示三种快速解决方案:<br /> <br />1.add default serial version ID<br />2.add generated serial version ID<br />3.add "Suppress Warnings"  'servi

huangfudy的专栏 3151

转:关于实现序列化提示没有定义serialVersionUID

The serializable class XXX does not declare a static final serialVersionUID field of type long 可序列化 CreateBPOVIEW 未声明型为 long 的静态终态 serialVersionUID 字 段 serialVersionUID作用: 序列化时为了保持版本的兼容性,...

jeffnono 1125

JAVA 序列化、反序列化以及serialVersionUID

前言 最近接手的老项目也不少,我在看拉下老项目,看同事敲代码的时候, 无聊问到同事,这个为啥要实现序列化? 你看有些序列化不是嘛,但是有些又序列化了,为啥? 为啥你现在新建的也序列化? 你知道序列化有啥用么? 一串连问后,得到了短暂的宁静。 我才发现, 其实很多人都没有去了解过这些 ,大多数都是脑子里有个模糊的概念,看到别人这么做,也跟着这么做。 所以,我决定写一篇关于这个...

默默不代表沉默 3660

private static final long serialVersionUID实现序列化中出现的意义

private static  final  long  serialVersionUID实现序列化中出现的意义实现java.io.Serializable这个接口是为序列化,serialVersionUID 用来表明实现序列化的不同版本间的兼容性。如果你修改了此, 要修改此值。否则以前用老版本的序列化恢复时会出错。 实现后如果你用的是工具的话会出来警告,他会提示你,可以自动生成p

my zone 1万+

什么是序列化 serialVersionUID是什么

serialVersionUID

weixin_46048519的博客 3002

java中在实现序列化接口时-serialVersionUID字段

序列化是将对象的状态转换为字节流的过程,以便能够将该对象保存到文件中、通过网络传输或持久化到数据库中。Java 提供了接口,允许开发者轻松地将 Java 对象序列化实现了接口的对象可以被序列化和反序列化。反序列化序列化的逆过程,它将保存的字节流重新转化为对象,恢复对象的状态。通过这种机制,Java 程序可以在运行期间保持对象状态的持久性,并且可以跨网络、文件系统等传递复杂对象。是接口中的一个静态变量,用来表明序列化的版本标识符。它是一个long的定义通常为,一般建议每个的都显式定义

Flying_Fish_roe的博客 1351

什么是 serialVersionUID序列化对象时必须提供 serialVersionUID 吗?

通过IDE自动生成一个serialVersionUID ,由、属性等信息计算而来开发环境:IEDA找到File下的Settings,如图:选中这两个框并应用。

qq_43842093的博客 2177

idea 添加serialVersionUID提示

idea添加 serialVersionUID提示

寂夜了无痕的博客 4986

javaserialVersionUID的作用

原文出处:https://www.cnblogs.com/duanxz/p/3511695.html实现Serializable接口的目的是为可持久化,比如在网络传输或本地存储,为系统的分布和异构部署提供先决条件。若没有序列化,现在我们所熟悉的远程调用,对象数据库都不可能存在,serialVersionUID适用于java序列化机制。简单来说,JAVA序列化的机制是通过判断的serialVer...

u014750606的博客 22万+
上一篇: GMail的另一种用法:移动硬盘或快速发送邮件:)
下一篇: 程序员修炼The Pragmatic Starter Kit
YuLimin
博客等级 码龄26年 1745粉丝 134原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值