javax.annotation.Nonnull 与断言

标签 java assert findbugs null-check

我在方法参数上使用了 Findbugs 和 javax.annotation.Nonnull。

在私有(private)方法上,我通常添加一个断言行来检查是否为空

private void myMethod(@Nonnull String str) {
    assert str != null
    ....

最新的 Netbeans 版本 (7.3rc2) 报告说断言检查不是必需的(因为 Nonnull 注释)。我不确定这是否是 Netbeans 错误。

是否可以删除断言行,因为我指定了@Nonnull 注释?

据我所知,注释仅在静态分析期间使用,而断言在启用时在执行期间处于 Activity 状态,因此两者不可替代。

最佳答案

断言在运行时进行评估,注解有助于 FindBugs 在运行前分析期间捕获问题。由于这两项检查并没有真正冲突,您可以同时保留它们。如果我的 IDE 告诉我删除断言,我会觉得很烦人。

关于javax.annotation.Nonnull 与断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14810030/

相关文章:

java - 使用 Google Lanterna 终端移动光标时出现问题

python - 处理异常断言到 Python 中的 NumPy 测试

java - 检查空值样式的变量

java - 当我使用 charAt() 时,字符串无法打印

sql - MySQL 中的断言

testing - 断言失败。无法确定原因?

使用 findbugs 的 java 编译错误。 com.sun.tools.javac.code.Symbol$CompletionFailure : class file for javax. annotation.meta.When not found

java - 自动检测来自java的外部调用

gradle - 如何使用不同的 pluginClasspath 在 gradle 中配置自定义 findbugs 任务

java - 进行涉及 Java 的 RAW 套接字编程的最佳方法