为什么同时使用CheckForNull和NotNull?

时间:2015-01-30 09:56:09

标签: 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的

由Findbugs静态代码分析工具

使用

edu.umd.cs.findbugs.annotations.Nonnull

edu.umd.cs.findbugs.annotations.CheckForNull

1 个答案:

答案 0 :(得分:3)

看起来有点奇怪。

我怀疑这只是一个错误; e.g。

  • 是粗心,
  • 这是一种从静态切换到动态检查的工件,反之亦然,无需完全完成工作,
  • 这是接受IDE建议的更正(导入)而不考虑的结果,或
  • 某人谁不明白注释的真正含义。

如果你真的想知道,那么"深潜"版本控制历史和/或询问作者。