摆脱Eclipse生成的serialVersionUID上面的注释

35

这已经成为我很烦恼的事情了。我写了一个类,并实现了Serializible接口。然后eclipse警告我没有serialVersionUID,所以我选择"添加生成的serialVersionUID"或"添加默认的serialVersionUID",最终得到了如下代码:

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

大多数时候,我不想添加评论,所以我不得不去删除评论。我希望默认情况下没有评论,但是我已经在偏好设置的代码模板中查找了,但还没有找到如何更改这个选项。我只是希望它看起来像这样:

  private static final long serialVersionUID = 4049849541314027178L;

一直想知道如何做到那个。 - Leo
从“看起来唯一的选择就是关闭所有自动生成的字段的注释。”,答案是不是。我已经创建了如何防止只为快速修复serialVersionUID警告而自动生成注释?以回应该问题。 - anon
2个回答

41

它正在使用模板来处理任何由 Eclipse 生成的字段。

您可以在中进行更改

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

...无论是全局设置还是按项目设置。


2
是的,但它会删除每个生成字段上方的自动生成注释。我认为在这里我们只想要摆脱这个具体字段上方的自动生成注释。 - wawek
2
谢谢,不过正如@wawek所指出的那样,似乎唯一的选择就是关闭所有自动生成字段的注释。虽然这也不算太糟糕。 - mrip
7
点赞因为 serialVersionUID 是我经常生成的唯一字段。 - Markus Pscheidt
1
我在你的答案基础上进行了扩展并引用了你的解决方案。我解释了这个SerialVersionID注释的自动生成只是一个特例。通常情况下,当你生成元素注释时会运行此生成,但重要的事实是当你快速修复序列化警告时它会自动运行。 - anon

1
进一步解释第一个答案,serialVersionUID 的自动生成注释只是一个注释模板生成,适用于所有字段,包括这个字段。当你从工具栏的源部分为该字段生成元素注释(Alt+Shift+J)时,它就会运行。
重要的事实是,在快速修复时,字段注释的生成也会自动运行禁用/更改所有字段的生成注释 你可以在执行原始回答者@slim回答的操作后,单击编辑清空注释来防止为所有字段生成注释,如下所示: 工具栏 -> 窗口 -> 首选项 -> Java -> 代码样式 -> 代码模板 -> 注释 -> 字段 快速修复可序列化警告后,请注意注释不再是自动生成的。

禁用/更改仅针对SerialVersionUID的自动生成注释

不幸的是,没有选项可以通过快速修复来阻止SerialVersionUID的自动注释生成,而不是清空所有字段的注释生成模板。在首选项中搜索“Comment”或“Serial”时,没有这样的选项。

幸运的是,这并不重要,因为对于其他字段,只有在为该字段生成元素注释时才会生成。您也可以选择手动注释或使用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;
    /* ... */
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接