34

这已经成为我的一个小毛病。我写了一个类,并实现Serializible. 然后 eclipse 警告我我没有serialVersionUID,所以我选择“添加生成的serialVersionUID ”或“添加默认的serialVersionUID ”,我最终得到这样的结果:

  /**
   * 
   */
  private static final long serialVersionUID = 4049849541314027178L;

大多数时候我不想添加评论,所以我不得不去删除评论。我宁愿默认没有评论,但我已经查看了首选项中的代码模板,还没有弄清楚如何更改它。我只是希望它看起来像这样:

  private static final long serialVersionUID = 4049849541314027178L;
4

2 回答 2

40

它为任何 Eclipse 生成的字段使用模板。

你可以改变它

 Preferences -> 
     Java -> 
        Code Style -> 
           Code Templates -> 
              Comments -> 
                 Fields

... 全局或每个项目。

于 2014-02-07T15:13:34.333 回答
1

为了从第一个答案进一步解释,自动生成的评论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;
    /* ... */
}
于 2018-07-04T06:36:01.050 回答