22得票5回答
让Java运行时忽略serialVersionUID?

我必须使用大量已编译的Java类,它们没有明确指定serialVersionUID。由于它们的UID是由编译器任意生成的,因此许多需要进行序列化和反序列化的类最终会导致异常,即使实际的类定义匹配也是如此(当然,这都是预期的行为)。 回过头去修复所有这些第三方代码对我来说不切实际。 因此,我...

15得票2回答
Eclipse中的serialVersionUID字段警告

我刚学习AWT,在其中编写了一个简单的程序,它可以正常工作,但在Eclipse中显示了一个警告信息,我不理解: 可序列化类TestGUI未声明静态最终serialVersionUID字段,类型为long 我知道这个警告信息与AWT无关,而且没有必要发布我的整个代码,但是当我尝试创建...

15得票3回答
Eclipse自动生成serialVersionUID并随着每次更改而更新

Eclipse可以很好地为我生成serialVersionUID。但这似乎是被动的代码生成,因为除非我再次进行生成,否则该编号不会在我更改文件时自动更新。 有没有一种方法可以在每次更改内容时生成serialVersionUID? "保存操作"似乎没有包括这样的选项 - 有人找到了某种方法吗?...

12得票1回答
Java的SerialVersionUid为1L是否可以?还是需要唯一性?

我有两个实现了Serializable接口的Java类。我将它们都设置为serialVersionUid为1L。 一位同事说,所有的类都必须拥有唯一的serial version uid,并且如果它们具有相同的serial version uid,则jvm会将它们视为相等。我认为它们的相等性...

12得票6回答
当对象具有不同的serialVersionUID时,如何反序列化在数据库中持久化的对象

我的客户有一个 Oracle 数据库,并且一个对象通过 objOutStream.writeObject 被持久化为 blob 字段,即使对象没有更改(可能是不同的 JVM 版本),该对象现在具有不同的 serialVersionUID,当他们尝试反序列化时会抛出异常:java.io.Inva...

11得票5回答
如何在Java中通过编程方式生成serialVersionUID?

我正在开发一个生成Java文件的项目。 我想能够选择性地像使用serialver工具一样添加serialVersionUID。 在我生成Java代码时是否有这样做的方法,还是我需要要求工具的用户手动提供UID? 明确一下,我不是要通过Eclipse或serialver工具自动执行此操作,而是...

11得票4回答
在Eclipse中生成的serialVersionUID是什么?

有没有办法在Eclipse中连续生成serialVersionUID? 连续生成指的是,如果一个可序列化类的serialVersionUID = 1L,则当我生成另一个类的serialVersionUID时,这将是serialVersionUID = 2L。 如果我手动指定1L,2L,3L等...

10得票2回答
为什么Java编译器会创建一个serialVersionUID合成字段?

作为调试应用程序的一部分,我注意到Field.getDeclaredFields()返回一些合成字段,包括类扩展接口中的serialVersionUID字段,尽管没有类扩展Serializable。编译器为什么会添加这样的字段? 更新:实际上还创建了一个名为$VRc的合成字段。

10得票3回答
为什么serialVersionUID不会自动生成?

为什么serialVersionUID不会自动生成?我在应用服务器上遇到了一个问题,似乎一个旧的类被缓存了。

10得票2回答
腌制对象版本控制

我正在开发一个项目,其中有大量对象使用 pickle/cPickle 进行序列化并存储在磁盘上。 随着项目的发展(发布到客户现场后),未来的功能/修复很可能需要我们更改一些已持久化对象的签名。这可能涉及添加字段、删除字段或甚至只是更改数据不变式。 是否有一种标准方法可以标记将被pickle...