2009-09-03 82 views
6

我想通过生成一个自动序列版本ID来删除某些类的一些警告。在Eclipse中,这样做很简单 - IDE可以自动生成一个并将其添加到类中。但是,我没有在NetBeans中看到这个功能。是可用的么?如果是这样,它在哪里?如果没有,是否有一个可以启用它的插件?NetBeans可以为Java类生成自动序列版本ID吗?

回答

9

其实我解决这个“问题”是停用我的项目配置的警告(我使用Eclipse,但我猜的NetBeans是一样的)因为恕我直言,这是一个错误的警告:没有一serialVersion是最安全的选择,因为JVM在启动时计算一个独特的启动(类似于类的哈希),同时明确地添加它,然后负责注意当您对代码做出不兼容的更改时。因此,如果你不关心这个问题,最好避免这个值(这样它只能兼容的版本,肯定是,但有一些误报:它认为这是不兼容的,但是事实上它会),而不是把那里固定的价值,你会(可能,在我的情况下)忘记在需要时更新,导致实际的有效性错误(假消极:它认为它是兼容的,但它不是)。

+3

这取决于你如何使用序列化。如果您将序列化跨不同JVM的类,即从一个JVM到另一个JVM,这可能会导致不兼容。 – Yishai 2009-09-03 13:19:37

+0

看起来这种方法对我目前的项目来说效果最好,但在NetBeans中,我没有看到任何地方关闭此警告(并且有很多压制警告注释看起来很糟糕)。 – 2009-09-03 13:42:06

+0

我能找到它... – 2009-09-03 13:47:33

5

除非需要与现有的序列化实例保持兼容,否则手动操作也很简单。就在这条线复制到类:

private static final long serialVersionUID = 1L; 

注意,是绝对的serialVersionUID是跨类唯一没有要求。

+0

虽然这是一个很好的建议,但我决定忽略这个警告,因为在这个特定的项目上这不是很重要。我只是不喜欢显示的警告。 – 2009-09-03 13:48:25

1

在NetBeans禁用这些警告:

  1. 公开赛:工具 - >选项
  2. 公开赛:编辑 - >提示标签
  3. 选择语言:Java
  4. 个取消选中标准javac的警告 - >连载
  5. OK

我也不得不清除〜/的.netbeans/6.8/VAR /缓存,并重新启动Netbeans的清除从任务列表中的警告。

0

(对于用户是哪里问同样的问题现在)
我使用nb7.4,发现从nb6.5这个插件nb7.4
plugin
我nb7.4和工作进行了测试好。 对于servial版本ID外观在
serialVersionUID
的意思,如果你加它明确你可以不更改UID都在改变你的课,直到你有没有你的类系列化,在一些地方保存: 如果你创建A级连载它
结束然后将其存储在数据库
年底再改A级制作不与旧的A级更兼容,
当有人试图从过去A类加载序列化对象的一类新的,他可以有问题。

当您更改类A并使其与最后一个类A不兼容时,您必须更改uid,因此如果有人试图加载它,将会得到InvalidClassExceptions。