NetBeans 能否为 Java 类生成自动序列版本 ID?
-
21-09-2019 - |
题
我想通过生成自动序列版本 ID 来删除某些类的一些警告。在 Eclipse 中,这很简单 - IDE 可以自动生成一个并将其添加到类中。但是,我在 NetBeans 中没有看到此功能。是可用的么?如果是的话,它在哪里?如果没有,有没有插件可以启用它?
解决方案
其实我解决这个“问题”是为的停用警告的在我的项目配置(我使用Eclipse,但我猜的NetBeans是一样的)因为恕我直言,这是一个错误的警告:没有 serialVersion是最安全的选择,因为JVM计算(类似类的哈希)一个是唯一的推出,同时增加它明确再负担您照顾更新它当且仅当你做不兼容更改您的密码。
所以,如果你不关心这个,这是更好地避免值(这样它只能与版本兼容的肯定兼容,但也有一些误报:它认为这是不兼容,但实际上它会),而不是把有一个固定的值,你会(可能是,在我的情况)忘记在需要的时候进行更新,从而导致实际有效性错误(假阴性:它认为它是兼容的,但它不是)。
其他提示
这是微不足道的手工做,除非你需要保持与现有的序列化实例兼容。只是这一行复制到类:
private static final long serialVersionUID = 1L;
请注意,有绝对的serialVersionUID
是跨类唯一没有要求。
要在 Netbeans 中禁用这些警告:
- 打开:工具->选项
- 打开:编辑器 -> 提示选项卡
- 选择语言:爪哇
- 取消选中标准 Javac 警告 -> 序列化
- 好的
我还必须清除 ~/.netbeans/6.8/var/cache 并重新启动 Netbeans 以清除任务列表中的警告。
(对于该用户,其中询问相同问题现在),点击 我使用nb7.4 m和发现从nb6.5这个插件nb7.4结果 插件结果 我在nb7.4测试并运行良好。 对于servial版本ID外观在结果的意义 的serialVersionUID 结果 如果添加它明确,你可以让所有的改变你的课,而不会更改UID,直到你有没有你的类序列化和存储的地方: 如果创建A级序列化结果 结束然后将其存储在数据库中搜索 年底再改A级制作没有更多的与旧的A级兼容,结果 当有人试图从最后一堂课的负载序列化对象的一类新的他能有问题。
当你改变A类,并使其与去年A级兼容,您必须更改uid所以如果有人尝试加载它会得到InvalidClassExceptions。