去掉 Eclipse 生成的 serialVersionUID 上面的注释

Posted

技术标签:

【中文标题】去掉 Eclipse 生成的 serialVersionUID 上面的注释【英文标题】:Getting rid of the comment above Eclipse-generated serialVersionUID 【发布时间】:2014-03-05 01:29:22 【问题描述】:

这已成为我最讨厌的事情。我写了一个类,并实现Serializible。然后eclipse警告我我没有serialVersionUID,所以我选择“添加生成的serialVersionUID”或“添加默认serialVersionUID”,我最终得到类似这个:

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

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

  private static final long serialVersionUID = 4049849541314027178L;

【问题讨论】:

也一直想知道怎么做 从“看起来唯一的选择是关闭所有自动生成的字段的 cmets。”,答案是 。我创建了How to prevent the auto-generation of comments just for quick-fixing the serialVersionUID warning? 来解决这个问题。 【参考方案1】:

它对任何 eclipse 生成的字段使用模板。

你可以改变它

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

...全局或每个项目。

【讨论】:

是的,但它会删除每个生成字段上方的自动生成的 cmets。我想在这里我们只想摆脱这个具体字段上方的自动生成的评论。 谢谢,尽管正如@wawek 指出的那样,看起来唯一的选择是关闭所有自动生成字段的 cmets。不过,这还不错。 支持,因为 serialVersionUID 是我定期生成的唯一字段。 我已经扩展了您的回答并引用了您的解决方案。我解释说这个 SerialVersionID 注释的自动生成只是一个特例。通常这一代会在你生成元素注释时运行,但重要的事实是它会在你快速修复串行警告时自动运行【参考方案2】:

为了进一步解释第一个答案,serialVersionUID 的自动生成的 cmets 只是一个适用于所有字段的评论模板生成,包括这个。当您从工具栏的 Source 部分为该字段生成元素注释 (Alt+Shift+J) 时,它就会运行。

重要的事实是,当您快速修复时,字段 cmets 的生成也会自动运行

可序列化类[ClassName] 没有声明long 类型的静态最终serialVersionUID 字段

所有字段禁用/更改生成的 cmets

您可以通过在执行原始回答者@slim 回答的内容后单击编辑空白评论来阻止为所有字段生成cmets,如

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

在快速修复 serializable 警告后,请注意评论不再自动生成。

SerialVersionUID禁用/更改评论的自动生成

不幸的是,没有选项可以防止通过快速修复为SerialVersionUID 自动生成 cmets,而无需为所有字段清空评论生成模板。在 Preferences 中搜索“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;
    /* ... */

【讨论】:

以上是关于去掉 Eclipse 生成的 serialVersionUID 上面的注释的主要内容,如果未能解决你的问题,请参考以下文章

如何去掉Eclipse里面自动追加的一些注释!!!内详

为啥Java忽略我的serialVersionUID?

idea生成serialVersionUID

eclipse怎么去掉svn标记

eclipse怎么去掉变量自动补全?

怎样去掉Eclipse中的Js错误提示