我想通过生成自动序列版本ID来删除某些类的一些警告。在Eclipse中,这很简单 - IDE可以自动生成一个并将其添加到类中。但是,我在NetBeans中看不到此功能。是可用的么?如果是的话,它在哪里?如果没有,是否有可以启用它的插件?
答案 0 :(得分:9)
实际上,我对该“问题”的解决方案是 在我的项目配置中停用该警告 (我使用Eclipse但我认为NetBeans是相同的),因为它是恕我直言一个错误的警告:没有一个serialVersion是最安全的选择,因为JVM计算一个在启动时是唯一的(类似于类的哈希),同时明确地添加它然后负担你当且仅当您对代码进行了不兼容的更改时才注意更新它。
所以,如果你不关心这一点,最好避免这个价值(这样它只能兼容兼容肯定的版本,但有一些误报:它认为是不兼容,但实际上它会)而不是把那个固定的值(你可能在我的情况下)忘记在需要时更新,导致实际的有效性错误(假阴性:它认为它兼容但它不是)。
答案 1 :(得分:6)
答案 2 :(得分:5)
除非您需要与现有的序列化实例保持兼容,否则手动操作也很简单。只需将此行复制到类中:
private static final long serialVersionUID = 1L;
请注意,serialVersionUID
绝对不需要跨类唯一。
答案 3 :(得分:1)
要在Netbeans中禁用这些警告:
我还必须清除〜/ .netbeans / 6.8 / var / cache并重启Netbeans以清除Tasks列表中的警告。
答案 4 :(得分:0)
(对于现在提出同样问题的用户)
我正在使用nb7.4并发现这个插件从nb6.5到nb7.4
plugin
我在nb7.4中进行了测试并且运行良好。
有关servial版本id的含义,请参阅
serialVersionUID
如果你明确地添加它,你可以在没有更改uid的情况下对你的类进行所有更改,直到你没有将类序列化并存储在某处:
如果你创建A类序列化它
然后将其存储在数据库中
结束然后更改A级,使其与旧的A级,更不兼容
当有人试图将序列化对象从最后一个A加载到新的A类时,他可能会遇到问题。
当您更改A类并使其与最后一个类A不兼容时,您必须更改uid,因此如果有人尝试加载它,将获得InvalidClassExceptions。