我试过用
在所有情况下,向其分配null不会产生来自IntelliJ 2016.2的投诉。
public class GreetingController {
@NotNull Integer x = 3;
public void foo() { x = null; }
}根据IntelliJ的说法,这一切都编译得很好。
此页来自IntelliJ明确指出"IntelliJ的想法突出了问题“,所以您可以在编辑器中看到检查结果。我甚至将示例代码(public class TestNullable)复制到我的编辑器中,它不会产生任何错误。
来自IntelliJ的另一页声明您可以更改它响应的注释。因此,我选择了javax.annotation.Nonnull,并确保这是我在代码中使用的,仍然没有运气。
要明确的是,我希望并理解的是,编辑器窗口/编译器提醒我注意这个问题(我不是在寻找运行时检查,NullPointerException已经在运行时正常工作了)。
如果它不能实时工作,我尝试了“重建项目”。
我肯定这一定有用,我做错什么了?
我已经上传了一个不起作用的例子:邮编下载。
发布于 2017-04-12 17:01:49
正如我从您的屏幕截图和示例项目中看到的,IntelliJ IDEA 给你看警告吗。请注意,这些警告是由代码检查显示的,这些检查正在动态运行,并将显示在编辑器中或Analyze检查代码结果中。编译器将不会显示这些警告。

请注意,如果需要,可以配置突出显示的警告(例如,添加下波效果):

您还可以更改检查的严重程度(例如出错):

您还可能希望投票支持此功能请求:
值得注意的是,请注意javax.annotation.Nullable注释,它可能不是您所认为的那样,请参见这句话和文档。多年来,IntelliJ IDEA错误地建议使用此注释,而对于这种情况,正确的注释是javax.annotation.CheckForNull。
此注释主要用于重写
Nonnull注释。静态分析工具通常应该将带注释的项视为没有注释,除非它们被配置为尽量减少假否定。使用CheckForNull指示应该始终检查元素值是否为空值。
发布于 2018-03-12 20:14:40
org.jetbrains.annotation的自己的注释。我使用的是来自javax.annotation的更一般的注释(我自己的意见)。javax.annotation.Nullablejavax.annotation.NotNulljavax.annotation注释,然后按下"OK“将不会锁定新设置,必须使用复选框按钮。成功指定javax.annotation.Nullable和javax.annotation.NotNull后,代码将正确突出显示空问题。
发布于 2017-04-12 16:49:41
这能做的最好就是提供警告。它不会阻止编译的发生,因为注释并不禁止或阻止代码编译的发生。
确保在IDE中启用了适当的检查,并确保您始终知道要传递到方法中的参数。IDE最多可以警告您,但它并不能真正阻止您。
或者,如果该方法接收到null参数,则引入单元测试以失败,并依赖该测试来确保您没有破坏代码或期望。
https://stackoverflow.com/questions/43372109
复制相似问题