【问题标题】:Is there a @NonNullByDefault annotation in IDEA?IDEA 中是否有 @NonNullByDefault 注解?
【发布时间】:2013-06-05 11:03:21
【问题描述】:

Eclipse 具有@NonNullByDefault 注释,它将所有值视为@NonNull,除非您将它们明确注释为@Nullable

IntelliJ IDEA 中是否有等效选项,还是必须始终使用 @Nonnull

【问题讨论】:

  • 不是@Nonnull 而是(JSR 305)吗? IDEA 可以使用@NotNull,但这是一个不同的注解。
  • @fge 谢谢,我修好了。
  • 顺便问一下,你会用那个注释做什么?那是用于静态源代码分析吗? IDEA 可以使用 FindBugs,它有一个插件。至于使用这些注解,我遵循 Guice 的建议:方法参数不能为空,除非使用 @Nullable 进行注解。但这是一个政策问题......
  • @fge 我们的编码策略是使用包括@NonNullByDefault 在内的Eclipse 注释。所以,我的问题是是否将 IDEA 配置为模拟 Eclipse 的空值分析。 @NonNullByDefault 似乎是棘手的部分。

标签: java null intellij-idea static-analysis


【解决方案1】:

Idea 版本 14 将支持 JSR 305“@TypeQualifierDefault”注解,它允许用户创建自定义注解,用于 package-info.java 文件中的包声明,指定该包(不仅是参数,还包括方法返回值、局部变量等)将被隐式注释为不允许空值。

不幸的是,这不会(当前)递归地影响子包,因此每个子包也必须有一个 package-info.java 文件,声明该子包使用注释。

详细信息和使用示例请参见此处:

http://youtrack.jetbrains.com/issue/IDEA-125281

请注意,这已在早期访问计划 (EAP) 版本中实现。

【讨论】:

    【解决方案2】:

    不,IDEA 目前不支持。

    作为证明,请参阅 lena 向allow 'NotNull' as the default element behavior for a given class or package 提出开放功能请求的链接。

    也许类似的功能将成为JSR-305 的标准,其中可能包括@ParametersAreNonnullByDefault 注释和相反的注释@ParametersAreNullableByDefault。请注意,与@NonNullByDefault 相比,这两个注释不包含返回值。因此,您仍然必须显式地注释返回值。

    不过,所有这些都不会改变当前状态。 JSR-305 既没有成为标准,IDEA 也没有实现它。

    【讨论】:

    猜你喜欢
    • 2016-04-18
    • 2011-04-06
    • 1970-01-01
    • 2023-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多