如何在包上使用NonNullByDefault

Fra*_*fka 15 java eclipse compiler-warnings

我的编译器警告我A default nullness annotation has not been specified for the package.我正在使用Juno和Java 7.

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

我可以以某种方式设置NonNullByDefault整个包吗?在Eclipse中,我无法右键单击包并说出add option类似的内容.

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

一个小例子会很棒.

cha*_*ium 14

总结:
获得上述建议对我来说并不直观.我刚刚想出的实际解决方案也不是.在package-info.java文件中:
a.把注释放在包声明
b上面.在包声明后输入NonNullByDefault注释


细节:
我不知道我是否是唯一一个阅读上述答案并且无法弄清楚如何使其工作的人.所以,为了更清楚,这里是我为了最终在Eclipse-Juno中工作而采取的(非显而易见的或直观的)步骤:

  1. 在Package Explorer中,转到显示警告(或错误)消息的根Java包,该消息以" 尚未为包指定默认空值注释... " 开头 - 对于此示例,请假设包名称为"org.public_domain" "
  2. 在Java包上,激活右键菜单并选择" New - > Package "选项 - 是的,我知道你的包已经存在,认为它是一个eclipse特性 - 它不会对你现有的包做任何事情
  3. 出现" New Java Package "对话框时,选中" Create package-info.java "复选框,然后单击"Finish"
  4. 您的Java编辑器现在将显示一个名为" package-info.java " 的新文件,其中包含以下内容:

    /**
     * 
     */
    /**
     * @author xyz
     *
     */  
    package org.public_domain;
    
    Run Code Online (Sandbox Code Playgroud)
  5. 现在,重新排列文件内容,如下所示:

    /**
     * 
     */
    /**
     * @author xyz
     *
     */  
    @NonNullByDefault  
    package org.public_domain;  
    import org.eclipse.jdt.annotation.NonNullByDefault;
    
    Run Code Online (Sandbox Code Playgroud)

    ......或者像这样......

    /**
     * 
     */
    /**
     * @author xyz
     *
     */  
    @org.eclipse.jdt.annotation.NonNullByDefault
    package org.public_domain;  
    
    Run Code Online (Sandbox Code Playgroud)
  6. 享受eclipse @NonNullByDefault的精彩

我的挑战是弄清楚我要把注释放在包装声明上面.并在程序包声明后输入NonNullByDefault批注.对我来说,这不直观.

希望这能节省别人我已经结束燃烧追逐这条特殊途径的时间.

  • 如果你在*package*声明之前放置一个合格的`@ org.eclipse.jdt.annotation.NonNullByDefault`,它可能看起来不那么令人困惑,不需要为这一次使用导入:) (2认同)