java - 为什么同时使用CheckForNull和NotNull?

标签 java null findbugs

我看到了这段代码。我想知道为什么要同时使用这两个注释? CheckForNull来自代码分析工具并检查编译时属性可以为null。但是NotNull是运行时检查并说该属性是NOT null?为什么同时使用?它们有冲突吗?

import javax.annotation.CheckForNull;
import javax.validation.constraints.NotNull;

    @CheckForNull
    @NotNull
    private Info Info;

JSR-303

用于运行时 bean 验证,而不是静态代码分析

javax.validation.constraints.NotNull

javax.validation.constraints.Null

查找错误

由Findbugs静态代码分析工具使用

edu.umd.cs.findbugs.annotations.Nonnull

edu.umd.cs.findbugs.annotations.CheckForNull

最佳答案

看起来有点奇怪。

我怀疑这只是一个错误;例如

  • 这是粗心,
  • 它是从静态检查切换到动态检查的产物,反之亦然,但没有完全完成工作,
  • 这是不假思索地接受 IDE 建议的更正(导入)的结果,或者
  • 不明白注释真正含义的人。

如果您真的想知道,请“深入研究”版本控制历史和/或询问作者。

关于java - 为什么同时使用CheckForNull和NotNull?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28233255/

相关文章:

jenkins-plugins - Jenkins findbug 阈值问题

java - 使用 Firebase 检索双向关系中的用户 - Android

java - 使用 Fusion Table API 拒绝授权

java - 抽象工厂设计模式的使用

null - EasyMock andReturn() 空返回值

命令行参数未传入

java - 如何在 java 中读取 Excel (.xlsx) 文件?

sql - SQL 'clever enough' 是在一个简单的地方优化掉一个 NULL 检查吗?

java - FindBugs:重写 equals() 导致静态代码分析错误 EQ_CHECK_FOR_OPERAND_NOT_COMPATIBLE_WITH_THIS

java - 如何检测 Java 字节码中的数组大小 (FindBugs)