NetBeans能否为Java类生成自动串行版本ID?
我想通过生成一个自动的串行版本ID来删除某些类的一些警告。在Eclipse中,这很简单——IDE可以自动生成一个警告并将其添加到类中。然而,我在NetBeans中看不到这种功能。有空吗?如果是,它在哪里?如果没有,是否有插件可以启用它?手动操作也很简单,除非您需要与现有序列化实例保持兼容。只需将这一行复制到类中:NetBeans能否为Java类生成自动串行版本ID?,java,netbeans,serialversionuid,Java,Netbeans,Serialversionuid,我想通过生成一个自动的串行版本ID来删除某些类的一些警告。在Eclipse中,这很简单——IDE可以自动生成一个警告并将其添加到类中。然而,我在NetBeans中看不到这种功能。有空吗?如果是,它在哪里?如果没有,是否有插件可以启用它?手动操作也很简单,除非您需要与现有序列化实例保持兼容。只需将这一行复制到类中: private static final long serialVersionUID = 1L; 请注意,serialVersionUID在类之间绝对不要求是唯一的 实际上,我解决这
private static final long serialVersionUID = 1L;
请注意,
serialVersionUID
在类之间绝对不要求是唯一的 实际上,我解决这个“问题”的方法是在我的项目配置中停用该警告(我使用Eclipse,但我想对于NetBeans是相同的),因为它是一个错误的警告:没有串行版本是最安全的选择,因为JVM在启动时计算一个唯一的警告(类似于类的散列)在显式添加它时,如果并且仅当您对代码进行了不兼容的更改时,您需要注意更新它
因此,如果您不关心这个问题,最好避免使用该值(这样一来,它只与兼容的版本兼容,当然是兼容的,但有一些误报:它认为不兼容,但事实上是兼容的),而不是设置一个固定的值(在我的情况下,可能是这样)忘记在需要时更新,这会导致实际的有效性错误(错误否定:它认为它是兼容的,但它不是)。看起来开箱即用的NetBeans不支持该功能,但插件支持 请看一看
,和在Netbeans中禁用这些警告:
我正在使用nb7.4,发现了这个从nb6.5到nb7.4的插件
我在nb7.4中测试了它,效果很好。 有关服务版本id的含义,请参见
如果显式添加它,则可以在不更改uid的情况下对类进行所有更改,直到您的类未序列化并存储在某个位置: 如果创建类A,则将其序列化
结束,然后将其存储在数据库中
结束,然后更改类别A,使其与旧类别A不再兼容,
当有人试图将序列化对象从最后一个类A加载到新的类A时,他可能会遇到问题
当您更改类A并使其与上一个类A不兼容时,您必须更改uid,因此如果有人尝试加载它,则会出现InvalidClassExceptions。这取决于您如何使用序列化。如果您要跨不同的JVM(即从一个JVM到另一个JVM)序列化类,则可能会导致不稳定性。看起来像这样这种方法在我当前的项目中效果最好,但我没有看到一个地方可以在任何地方都关闭此警告(而且有很多抑制警告注释似乎很糟糕)在NetBeans中。不使用版本可能会导致两个jvm之间或不同操作系统之间,或不同java版本和其他实际情况之间的序列化中断,因此,如果您需要在不同系统上共享java对象,强烈建议您使用版本id,即使保存对象,关闭系统然后更新jvm也可能导致尽管这是一个很好的建议,我还是决定忽略这个警告,因为在这个项目上没有那么重要。我只是不喜欢出现这个警告。