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

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

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

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

  private static final long serialVersionUID = 4049849541314027178L;

【问题讨论】:

标签: java eclipse comments serializable serialversionuid


【解决方案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;
    /* ... */
}

【讨论】:

    猜你喜欢
    • 2012-05-10
    • 2011-04-25
    • 2011-02-02
    • 2016-05-05
    • 2017-07-04
    • 1970-01-01
    • 2010-11-30
    • 2013-11-18
    相关资源
    最近更新 更多