首页 文章

为什么同时使用CheckForNull和NotNull?

提问于
浏览
2

我看到了这段代码 . 我想知道为什么同时使用这两个注释? CheckForNull是来自代码分析工具并检查 property can be null 的编译时间 . 但NotNull是运行时检查,并说该属性是 NOT null?为什么他们同时使用?他们是否相互冲突?

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

    @CheckForNull
    @NotNull
    private Info Info;

JSR-303

用于 runtime bean验证,而不是静态代码分析

javax.validation.constraints.NotNull

javax.validation.constraints.Null

Findbugs

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

edu.umd.cs.findbugs.annotations.Nonnull

edu.umd.cs.findbugs.annotations.CheckForNull

1 回答

  • 3

    看起来有点奇怪 .

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

    • 这是粗心大意,

    • 它是从静态切换到动态检查的工件,反之亦然,没有完全完成工作,

    • 这是接受IDE建议的更正(导入)而不考虑的结果,或者

    • 某人不明白注释的真正含义 .


    如果你真的想知道,那么“深入”版本控制历史和/或询问作者 .

相关问题