serialversionuid相关内容

让 Java 运行时忽略 serialVersionUIDs?

我必须处理大量未明确指定 serialVersionUID 的已编译 Java 类.因为它们的 UID 是由编译器任意生成的,许多需要序列化和反序列化的类最终会导致异常,即使实际的类定义匹配.(当然,这都是预期的行为.) 返回并修复所有这些 3rd 方代码对我来说是不切实际的. 因此,我的问题是:有什么方法可以让 Java 运行时忽略serialVersionUID 的差异,并且只有在 ..
发布时间:2021-12-21 22:05:38 Java开发

为什么生成长的 serialVersionUID 而不是简单的 1L?

当类在 Eclipse 中实现 Serializable 时,我有两个选择:添加默认的 serialVersionUID(1L) 或生成的 serialVersionUID(3567653491060394677L).我认为第一个更酷,但很多时候我看到人们使用第二个选项.是否有任何理由生成long serialVersionUID? 解决方案 据我所知,这只是为了与以前的版本兼容.这仅在您 ..
发布时间:2021-12-21 21:55:25 Java开发

这是什么意思:可序列化的类没有声明静态的最终 serialVersionUID 字段?

我收到了标题中给出的警告信息.我想了解并删除它.我已经在这个问题上找到了一些答案,但由于技术术语过多,我不明白这些答案.能不能用简单的话来解释这个问题? 附言我知道 OOP 是什么.我知道什么是对象、类、方法、字段和实例化. P.P.S.如果有人需要我的代码,它在这里: import java.awt.*;导入 javax.swing.*;公共类 HelloWorldSwing 扩展 ..
发布时间:2021-11-25 21:06:07 Java开发

1L的Java SerialVersionUid可以吗?还是必须是独一无二的?

我有两个实现可序列化的 Java 类.我将它们都设置为 1L 的 serialVersionUid. 一位同事说,所有的类都必须有一个唯一的串行版本 uid,如果它们具有相同的串行版本 uid,jvm 会将类视为平等.我认为相等是基于 equals 方法的结果,而不是基于串行版本的 uid. 据我了解,串行版本 uid 用于指示类的版本,并且当类以不兼容的方式更改时,串行版本 uid ..
发布时间:2021-07-19 18:56:01 Java开发

如何在 Java 中以编程方式生成 serialVersionUID?

我正在开发一个生成 Java 文件的项目.我希望能够像使用 serialver 工具. 当我生成 Java 代码时,有没有办法做到这一点,还是需要让工具的用户手动提供 UID?需要明确的是,我不希望通过 Eclipse 或 serialver 工具自动执行此操作,而是希望通过 Java 本身来执行此操作. 解决方案 有一个版本的 serialver 工具源可用 来自 OpenJDK. ..
发布时间:2021-07-19 18:55:56 Java开发

如何防止仅出于快速修复serialVersionUID警告而自动生成注释?

这个Eclipse问题是对“的响应eclipse上方的注释会生成serialVersionUID,” ,但到目前为止,单个答案(解决了此链接的问题并被接受)适用于所有注释。 但是我的问题会更具体(它不是重复的)-我希望正常生成其他字段的注释,而在通过生成字段快速修复可序列化警告时仅不生成注释。 作为对原始问题的公认答案,回答者表示 它正在使用任何月蚀生成字段的模板。 您可以 ..
发布时间:2020-10-06 05:19:51 Java开发

为什么serialVersionUID字段存在?

Serializable界面的启动使我感到困惑,为什么我必须在所有类中都包含此字段.我知道此接口需要一个唯一的标识符来标记该类,但是为什么它们不能在运行时生成该接口.例如,他们可以使用完全合格的类名的MD5哈希值或类似的方法(用于在极少数情况下处理重复项)来生成它(我敢肯定,当要求生成ID时,eclipse会执行什么操作). 所以我要问的是(框架的帖子不只是针对标准库的麻烦),正是框架如何使 ..
发布时间:2020-07-18 18:36:30 Java开发

NetBeans可以为Java类生成自动的串行版本ID吗?

我想通过生成自动串行版本ID来删除某些类的一些警告.在Eclipse中,这很简单-IDE可以自动生成一个并将其添加到类中.但是,我在NetBeans中看不到此功能.是可用的么?如果是这样,它在哪里?如果没有,是否有可以启用它的插件? 解决方案 实际上,我针对该“问题"的解决方案是在项目配置中 停用该警告 (我使用Eclipse,但我猜NetBeans与IMHO相同),这是一个错误的警告:不 ..
发布时间:2020-05-17 02:07:38 Java开发

序列化的lambda和没有serialVersionUID?

我正在尝试学习序列化如何与Java及其最新版本一起使用。我正在尝试序列化这样的lambda: Runnable r =(Runnable& Serializable)() - > {System.out.println(“这是一个测试”);}; 但我注意到我没有关于缺少 serialVersionUID 变量。这是正常的吗? 我知道它会在运行时生成,但强烈建议定 ..
发布时间:2019-01-14 11:56:59 Java开发

eclipse中的serialVersionUID字段警告

我刚刚开始使用AWT并在其中制作了一个简单的程序,它工作正常,但它在eclipse中显示一条我不明白的警告信息: 可序列化类TestGUI没有声明类型为long的静态最终 serialVersionUID字段 I知道警告信息与AWT无关,并且没有必要发布我的整个代码,但当我试图制作代码的SSCCE时,警告也消失了。由于我不知道为什么会产生这个警告,所以我不知道在我的SSCCE中保留哪 ..
发布时间:2019-01-02 13:51:29 Java开发

Java - 修改二进制序列化对象的serialVersionUID

几个月前,我将java.io.Serializable对象序列化为一个文件。现在我需要读取内容,但从那时起serialVersionUID已经改变,现在我遇到了“类不兼容”的错误。我知道没有数据成员发生过变化,因此唯一的障碍是serialVersionUID检查。 有没有办法可以禁用检查或修改二进制文件中的serialVersionUID? CLARIFICATION 这个问题假 ..
发布时间:2019-01-02 10:15:18 Java开发

Java:应该是可序列化的内部和外部匿名类有Seri​​alVersionUID吗?

虽然我目前不打算序列化任何东西,但我给所有可序列化的外部类,以及静态嵌套类a SerialVersionUID ,因为这是正确的方法这样做。 但是,我读过这里 内部类的序列化(即嵌套类)这些不是静态成员类,包括本地和匿名类,强烈建议不要出于几个原因。 ... 所以我的问题是: 我应该给内心和匿名类每个 SerialVersionUID ,或者我应该向那些人添加 @Suppr ..

我在哪里更改Eclipse中的设置,以便为Serializable类生成serialVersionUID?

我希望Eclipse为实现 Serializable 的类生成 serialVersionUID 。 但是,当我创建一个实现 Serializable 的类时,我的Eclipse实例不会给我一个警告或错误。此外,它没有提供有关添加生成的 serialVersionUID 的建议。我在哪里更改所需的设置? 解决方案 打开序列化没有serialVersionID的类,转到窗口> 首选项> ..

查找序列化对象的serialVersionUID

有没有办法确定序列化Java对象的生成 serialVersionUID ? 问题在于我没有明确指定 serialVersionUID 序列化了一个对象。现在反序列化过程抱怨类不兼容。但是我并没有以一种使它不兼容的方式改变这个类。所以我假设在类中指定 serialVersionUID 就足够了,因为它存储在对象数据中。为了做到这一点,我需要从序列化数据中读取 serialVersionUID ..
发布时间:2018-12-10 22:51:02 Java开发

为什么不自动生成serialVersionUID?

为什么不自动生成 serialVersionUID ?我在应用程序服务器上遇到了一个问题,显然是在缓存旧类。 解决方案 serialversionuid不会自动生成,因为有危险。当设置serialversionuid时,它意味着类的两个版本在序列化方面是兼容的。 想象一下你有一个名为Foo的类,它有 no serialversionuid (默认值),并将Foo实例序列化为文件。稍后 ..
发布时间:2018-12-07 12:01:25 Java开发