首页 > 解决方案 > AndroidStudio (IDEA) 代码检查:“...可能会产生 NullPointerException”

问题描述

我在Java中有以下代码:

String func() {
    Object data = otherFunc();
    return data.toString();
}

otherFunc() 是@Nullable 函数,它可以返回null。因此 IDE 将 toString() 方法突出显示为危险的,因为它可能导致 NullPointerException。

但就我而言,我对 otherFunc() 的非空结果有 100% 的信心。所以我在那里添加了一个断言条件:

String func() {
    Object data = otherFunc();
    MyAssert.notNull(data, some_debug_info);
    return data.toString();
}

在 MyAssert.notNull() 调用中有一个空检查验证,如果它为空则抛出异常(带有一些额外的调试信息)。无论如何,Android Studio 都会突出显示 toString() ......

问题:

如何在 MyAssert.notNull() 调用之后指示“数据”对象不能为空?也许有一些@annotations?

代码中有很多类似的地方,所以解决方法应该只修改assert函数!

标签: javaandroid

解决方案


IntelliJ 的Contract注释可能是您正在寻找的。

用 should 注释您的方法@Contract("null, _ -> fail")会告诉 IntelliJ,输入 null 作为第一个参数会导致异常,这意味着调用之后的任何代码都将假定它是非 null 的。


推荐阅读