我看到了这段代码。我想知道为什么同时使用这两个注释? CheckForNull来自代码分析工具,并检查编译时间该属性可以为null。但是NotNull是运行时检查,并说该属性不为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/

10-11 04:15
查看更多