在IDEA中是否有@NonNullByDefault注释?

9
Eclipse有@NonNullByDefault注释,它将所有值视为@NonNull,除非您将其显式注释为@Nullable
在IntelliJ IDEA中是否有等效选项,还是必须始终使用@Nonnull

1
这不应该是 @Nonnull 吗(JSR 305)? IDEA 可以使用 @NotNull,但这是一个不同的注释。 - fge
顺便问一下,您会用那个注释做什么呢?是用于静态源代码分析吗?IDEA可以使用FindBugs,它有一个插件。至于使用这些注释,我遵循Guice的建议:方法参数不能为null,除非带有@Nullable注释。但这是一个政策问题... - fge
我们的编码策略是使用Eclipse注释,包括@NonNullByDefault。因此,我的问题是是否可以配置IDEA来模拟Eclipse的空值分析。 @NonNullByDefault似乎是棘手的部分。 - Philipp Claßen
1
请投票支持:http://youtrack.jetbrains.com/issue/IDEA-65566。 - lena
2个回答

11

Idea 14版本将支持JSR 305 "@TypeQualifierDefault"注解,允许用户创建自定义注解,并在package-info.java文件的包声明上使用它,指定该包中的所有内容(不仅是参数,还包括方法返回值、局部变量等)都将隐式地标记为不允许为空值。

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

详情和使用示例请参见此处:

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

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


我可以确认这种方法适用于IntelliJ IDEA 2023.1.1(社区版)。 - kol

3

不,目前IDEA不支持此功能。

作为证明,请参见lena的链接,了解关于开放功能请求的信息,以允许在给定类或包的默认元素行为中使用“NotNull”为例。

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

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


5
现在,IDEA已支持@ParametersAreNonnullByDefault注释:http://www.jetbrains.com/idea/webhelp/@parametersarenonnullbydefault-annotation.html - Lodewijk Bogaards
链接在评论中是失效的...这个有效(目前为止...):https://www.jetbrains.com/help/idea/2017.1/parametersarenonnullbydefault-annotation.html - Lambart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接