有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java去掉上面的注释使SerialVersionId黯然失色

这已成了我的一大烦恼。我编写一个类,并实现Serializible。然后eclipse警告我没有serialVersionUID,所以我选择了“添加生成的SerialVersionId”或“添加默认SerialVersionId”,结果是这样的:

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

大多数时候我不想添加评论,所以我不得不去删除评论。我希望默认设置为“无注释”,但我已经查看了preferences中的代码模板,还没有找到如何更改此设置的方法。我只是想让它看起来像这样:

  private static final long serialVersionUID = 4049849541314027178L;

共 (2) 个答案

  1. # 1 楼答案

    它将模板用于任何eclipse生成的字段

    你可以改变它

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

    。。。无论是全球还是每个项目

  2. # 2 楼答案

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

    重要的事实是,在快速修复时,字段注释的生成也会自动运行

    The serializable class [ClassName] does not declare a static final serialVersionUID field of type long"

    禁用/更改为所有字段生成的注释

    在执行原始应答者@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;
        /* ... */
    }