如何在软件包上使用NonNullByDefault

2022-09-03 06:15:51

我的编译器警告我有关 .我正在将Juno与Java 7一起使用。A default nullness annotation has not been specified for the package

文档统计信息应添加为包选项,但我不知道这意味着什么。@NonNullByDefault

我可以以某种方式为整个软件包设置吗?在Eclipse中,我不能右键单击一个软件包并说或类似的话。NonNullByDefaultadd option

或者我只是添加到包中的任何类,然后它对该包中的所有bean都有效?或者我必须在pakage中创建一些元信息文件来添加软件包选项?我一定是瞎子,因为我在网上找不到任何帮助....@NonNullByDefault

一个小例子会很棒。


答案 1

总结:
让上述建议发挥作用对我来说并不直观。我剛剛想出的實際解決方案也不是。在包信息中.java文件:
a. 将注释放在包声明
的上方 b. 将 NonNullByDefault 注释导入放在包声明之后


详细信息:
我不知道我是否是唯一一个阅读上述答案并且不知道如何使其工作的人。所以,为了更加清楚,以下是我为最终在Eclipse-Juno中工作而采取的(不明显或直观的)步骤:

  1. 在包资源管理器中,转到根 Java 包,该包显示警告(或错误)消息,该消息以“尚未为包指定默认空注释...”开头 - 对于此示例,请假定包名称为“org.public_domain”
  2. 在Java包上,激活右键单击菜单并选择“新建->包”选项 - 是的,我知道您的包已经存在,将其视为eclipse特性 - 它不会对您现有的包执行任何操作
  3. 当出现“新建Java包”对话框时,选中“创建包信息.java”复选框,然后单击“完成”
  4. 您的 Java 编辑器现在将有一个名为“package-info.java”的新文件,其中包含以下内容:

    /**
     * 
     */
    /**
     * @author xyz
     *
     */  
    package org.public_domain;
    
  5. 现在,重新排列文件内容,如下所示:

    /**
     * 
     */
    /**
     * @author xyz
     *
     */  
    @NonNullByDefault  
    package org.public_domain;  
    import org.eclipse.jdt.annotation.NonNullByDefault;
    

    ...或者像这样...

    /**
     * 
     */
    /**
     * @author xyz
     *
     */  
    @org.eclipse.jdt.annotation.NonNullByDefault
    package org.public_domain;  
    
  6. 享受日食@NonNullByDefault

我的挑战是弄清楚我是否要将注释放在包声明之上。并将NonNullByDefault注释导入放在包声明之后。对我来说,这并不直观。

希望这能节省别人的时间,我最终烧毁了追逐这条特殊的路径。


答案 2

如果您只是想摆脱警告并忽略此功能,因为您没有使用它,您只需在Eclipse首选项中禁用它:

窗口>首选项 > Java > 编译器>错误/警告 > 空分析 > 包上缺少“@NonNullByDefault”注释 = [忽略]


推荐