77得票4回答
一个抽象类是否应该具有serialVersionUID?

在Java中,如果一个类实现了Serializable接口但是是抽象类,它是否需要声明一个serialVersionUID长整型呢?还是只有子类需要声明? 在这种情况下,的确打算让所有子类处理序列化,因为该类型的目的是用于RMI调用。

3413得票25回答
什么是serialVersionUID,为什么我需要使用它?

当缺少 serialVersionUID 时,Eclipse会发出警告。 可序列化类Foo没有声明静态的final serialVersionUID 字段,类型为long serialVersionUID 是什么以及为什么它很重要?请给出一个示例,其中缺少serialVersion...

248得票5回答
什么意思:可序列化的类没有声明静态最终serialVersionUID字段?

我收到了标题中给出的警告信息,希望能够理解并解决它。我已经在这个问题上找到了一些答案,但由于技术术语过多而无法理解这些答案。有可能用简单的话来解释这个问题吗? P.S. 我知道什么是面向对象编程(OOP)。我知道什么是对象、类、方法、字段和实例化。 P.P.S. 如果有人需要我的代码,它在...

8得票1回答
序列化的Lambda表达式和没有serialVersionUID怎么办?

我想学习Java及其最新版本中的序列化工作原理。我试图像这样序列化一个lambda表达式: Runnable r = (Runnable & Serializable)() -> {System.out.println("This is a test");}; 但是我注意到...

76得票12回答
使用 serialVersionUID 还是抑制警告?

我想创建一个类,例如扩展HttpServlet。我的编译器警告我说我的类应该有一个 serialVersionUID。如果我知道这个对象永远不会被序列化,我应该定义它还是添加一个注释以抑制这些警告? 我会定义serialVersionUID。虽然这个对象可能永远不会被序列化,但是确保它的se...

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

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

8得票1回答
如何摆脱InvalidClassException SerialVersionUID?

我曾经在数据库中存储了一个Java对象,几天后我改变了我的JRE版本。现在当我尝试读取相同的对象时,我遇到以下异常: Exception in thread "main" java.io.InvalidClassException: SerializeMe; local class inco...

228得票10回答
为什么要生成长的serialVersionUID而不是简单的1L?

当在Eclipse中实现Serializable类时,我有两个选项:添加默认的serialVersionUID(1L)或生成serialVersionUID(3567653491060394677L)。我认为第一个更酷,但很多时候我看到人们使用第二个选项。是否有生成long serialVer...

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

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

7得票5回答
NetBeans能否为Java类生成自动序列版本ID?

我想通过生成自动序列版本ID来消除某些类的警告。在Eclipse中,这很容易实现 - IDE可以自动生成并将其添加到类中。然而,在NetBeans中我没有看到这个功能。它是否可用?如果是,那么在哪里?如果不是,是否有插件可以启用它?