我用ide为eclipse,创建java类之后,每个java类都有一个警告信息,说没有声明静态变量serialVersionUID,请问eclipse中java类中声明静态变量serialVersionUID是干什么用的?如何声明及赋值?
3条回答 默认 最新
- 关注
码龄 粉丝数 原力等级 --
- 被采纳
- 被点赞
- 采纳率
rednaxelafx 2009-09-28 15:32最佳回答 专家已采纳嗯,跟Eclipse没关系。它只是建议你应该给一个serialVersionUID会比较好。这个变量的说明在java.lang.Serializable的文档里有写:
[url]http://gceclub.sun.com.cn/Java_Docs/html/zh_CN/api/java/io/Serializable.html[/url]
[quote]序列化运行时使用一个称为 serialVersionUID 的版本号与每个可序列化类相关联,该序列号在反序列化过程中用于验证序列化对象的发送者和接收者是否为该对象加载了与序列化兼容的类。如果接收者加载的该对象的类的 serialVersionUID 与对应的发送者的类的版本号不同,则反序列化将会导致 InvalidClassException。可序列化类可以通过声明名为 "serialVersionUID" 的字段(该字段必须是静态 (static)、最终 (final) 的 long 型字段)显式声明其自己的 serialVersionUID:ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L;
如果可序列化类未显式声明 serialVersionUID,则序列化运行时将基于该类的各个方面计算该类的默认 serialVersionUID 值,如“Java(TM) 对象序列化规范”中所述。不过,强烈建议 所有可序列化类都显式声明 serialVersionUID 值,原因计算默认的 serialVersionUID 对类的详细信息具有较高的敏感性,根据编译器实现的不同可能千差万别,这样在反序列化过程中可能会导致意外的 InvalidClassException。因此,为保证 serialVersionUID 值跨不同 java 编译器实现的一致性,序列化类必须声明一个明确的 serialVersionUID 值。还强烈建议使用 private 修改器显示声明 serialVersionUID(如果可能),原因是这种声明仅应用于立即声明类 -- serialVersionUID 字段作为继承成员没有用处。 [/quote]采纳该答案 已采纳该答案 专家已采纳评论解决 无用打赏举报微信扫一扫
分享评论登录 后可回复...
报告相同问题?
相关推荐 更多相似问题
- 2009-09-28 14:30回答 3 已采纳 嗯,跟Eclipse没关系。它只是建议你应该给一个serialVersionUID会比较好。这个变量的说明在java.lang.Serializable的文档里有写: [url]http://gce
- 2015-02-18 08:54回答 3 已采纳 虽然你没有直接实现Serializable,接口,但你继承的javax.swing.JFrame这个类实现了Serializable接口。 个人建议学习类的时候,留意下类实现哪些了接口(接口
- 2022-05-14 15:30回答 2 已采纳 你要实现 Serializable 接口才能序列化
- 2021-02-26 21:41请你吃草莓蛋挞的博客 在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx...
- 2018-07-19 23:42玩名堂_的博客 在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx...
- 2021-04-17 08:57庄明仁的博客 Java中有效的("")警告名称列表是什么?在@SuppressWarnings("")中的("")之间的位。7个解决方案226 votes这取决于您的IDE或编译器。以下是Eclipse Galileo的列表:所有要压制所有警告拳击以禁止相对于装箱/拆箱操作的...
- 2015-11-24 06:19回答 5 已采纳 Serializable是一个标识接口,没有需要实现的方法,凡是实现该接口的类都可以进行序列化和反序列化操作。 实现serializable接口的作用是就是可以把对象存到字节流,然后可以恢复。所以你
- 2020-10-10 06:02回答 2 已采纳 数据库是连接成功了,java.sql.SQLException: no such table: student 但是你数据库没有student这个表啊。 数据库被锁定,先断开连接,然后在执行有关数据
- 2012-07-26 21:39回答 1 已采纳 serialVersionUID作用: 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。 有两种生成方式: 一个是默认的1L,比如:priv
- 2021-03-05 00:33Java知音_的博客 作者:duanxzcnblogs.com/duanxz/p/3511695.htmlserialVersionUID适用于Java的序列化机制。简单来说,Java的序列化机制是通过判断类的...
- 2019-01-13 15:02诚o的博客 在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx...
- 2021-03-22 16:09weixin_39862716的博客 在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx...
- 2008-11-12 23:24回答 20 已采纳 The docs for java.io.Serializable are probably about as good an explanation as you'll get: The
- 2022-04-05 10:50回答 3 已采纳 resultSet.next() 用这个去判断
- 2021-03-21 11:20PCIM Asia的博客 实现Serializable接口的目的是为类可持久化,比如在网络传输或本地存储,...简单来说,JAVA序列化的机制是通过判断类的serialVersionUID来验证的版本一致的。在进行反序列化时,JVM会把传来的字节流中的serialVersi...
- 2018-08-10 10:28-Billy的博客 在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx...
- 2021-09-04 08:35Java精选的博客 点击上方“Java精选”,选择“设为星标”别问别人为什么,多问自己凭什么!下方留言必回,有问必答!每天08:08更新文章,每天进步一点点...serialVersionUID适用于Ja...
- 2019-02-25 15:18YimBa的博客 在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是InvalidCastEx...
- 2021-12-23 17:17Java小果的博客 在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体类的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常,即是...
- 2020-05-17 13:35dnc8371的博客 我经常会看到类似此SerialVersionUID的问题,或者如果不在我的Serializable类中声明SerialVersionUID会发生什么情况? 除了涉及到的复杂性和罕见的使用之外,这些问题的另一个原因是Eclipse IDE发出警告,警告不要...
- 没有解决我的问题, 去提问