当前位置: 首页 > 面试题库 >

明确的serialVersionUID认为有害吗?

何高歌
2023-03-14
问题内容

我可能为此冒险。

在我看来,为新类明确指定serialVersionUID是不好的。考虑以下两种情况:在布局应更改的情况下不进行更改,在布局不更改的情况下进行更改。

几乎只在显式的情况下才会更改应更改的位置。在这种情况下,它会导致一些非常细微,难以发现的错误。特别是在开发期间,班级布局经常更改。但是,如果未明确指定,它将改变并且反序列化将大声中断,这很可能是通过清除存储库来解决的。

仅在隐式时才进行更改。这是罕见的情况,其中类的布局已更改,但我们仍然希望从旧的序列化Blob中反序列化。这很可能会在质量检查过程中捕获(
从5.2升级到5.2.1后出现奇怪的错误,请参见附加的堆栈跟踪 ),并且可以通过设置显式值来进行简单修复。

注释?


问题答案:

除了类布局更改之外,其他原因可能导致不应该更改它的时间-问题在于它取决于编译器实现。如果使用Eclipse进行调试,但是使用javac进行生产构建,
最终 可能会 得到两组不兼容的数据。



 类似资料:
  • 问题内容: 这是一个设计问题,未提交具体代码来保护我的底部。 使用Hibernate时,标准工作流程如下: 公开会议 开始交易 做生意(读取和修改数据) 提交交易 闭幕会议 可能会重复2-4次。 Session.clear()的合理用例是什么? 答:我遇到的具体问题是一段(大型)代码,该代码可以加载和修改实体,然后清除()会话,实质上是丢弃所做的更改。(要完成的业务任务不包括修改实体,因此代码“有

  • 问题内容: 为什么是选择?如果添加了想要的新列,这是否意味着更少的代码更改? 我知道这在某些数据库上是性能问题,但是如果您真的想要每列,该怎么办? 问题答案: 确实有三个主要原因: 将数据转移到消费者方面效率低下。 当您选择SELECT *时,通常从数据库中检索到的列数超出了应用程序实际需要运行的列数。这将导致更多数据从数据库服务器移至客户端,从而减慢访问速度并增加计算机上的负载,并花费更多时间在

  • 问题内容: 我想使用初始化一个字典集(在Python 2.6中),但是结果结构表现得很奇怪。进一步来说: 我显然不想将3加到所有集合中,而只添加到对应于的集合中。当然,可以通过不使用进行初始化来避免此问题,但是我想了解一下我在这里缺少的内容。 问题答案: 的第二个参数只是一个值。您已经创建了一个字典,该字典的设置与每个键的值 相同 。大概您了解它的工作方式: 您在那看到相同的行为;你的情况,,,(

  • 问题内容: 为什么不自动生成?我在应用程序服务器上遇到了一个问题,该服务器显然正在缓存一个旧类。 问题答案: 不会自动生成serialversionuid,因为它很危险。设置serialversionuid时,表示类的两个版本在序列化方面兼容。 假设您有一个名为Foo的类,并且它 没有serialversionuid (默认值),并且将Foo的实例序列化为文件。稍后,您将一些新成员添加到Foo类。

  • When you're managing a team of programmers, one of the first things you have to learn to get right is task allocation. That's just a five-dollar word for giving people things to do. It's known colloqu

  • Mike Murray, a surprisingly hapless HR manager at Microsoft, made a number of goofs, but the doozie was introducing a "Ship It" award shortly after he started the job. The idea was that you would get