为了从第一个答案进一步解释,自动生成的评论serialVersionUID
只是一个评论模板生成,适用于所有字段,包括这个。当您从工具栏的 Source 部分为该字段生成元素注释 (Alt+Shift+J)时,它将运行。
重要的事实是,当您快速修复时,字段注释的生成也会自动运行
可序列化类[ClassName]
未声明 long 类型的静态最终 serialVersionUID 字段"
禁用/更改所有字段生成的注释
您可以通过在执行原始回答者@slim 回答的内容后单击编辑并将评论空白来防止为所有字段生成评论,如
Toolbar -> Window -> Preferences -> Java -> Code Style -> Code Templates -> Comments -> Fields
快速修复可序列化警告后,请注意不再自动生成注释。
禁用/更改评论的自动生成只是为了SerialVersionUID
不幸的是,没有选项可以阻止SerialVersionUID
通过快速修复自动生成评论,而无需为所有字段清空评论生成模板。在首选项中搜索“评论”或“序列号”时没有这样的选项。
幸运的是,这并不重要,因为对于其他字段,它仅在您为该字段生成元素注释时生成。您还可以更喜欢手动注释或 Javadoc 字段。
例子
此代码摘录(仅显示字段)显示有关序列化的警告。
public class SomePanel extends JPanel {
private String name;
/* ... */
}
您快速修复此警告,并生成该name
字段的元素注释。如果不清空模板,您会得到这个,这是您不想要的serialVersionUID
:
public class SomePanel extends JPanel {
/**
*
*/
private static final long serialVersionUID = -5173652620102412871L;
/**
*
*/
private String name;
/* ... */
}
在为字段的注释生成模板清空后,您会得到预期的结果:
public class SomePanel extends JPanel {
private static final long serialVersionUID = 1L;
private String name;
/* ... */
}