11

我刚开始使用新的 Eclipse 4.2 (Juno) Null Analysis。

在这样的代码上:

x = foo();
if (x == null)
    fail("x is null");
return x.bar();

我收到 x 可能为空的警告。但它不可能,因为失败总是抛出,因此永远不会返回。(通过更好的程序间分析,它大概可以自动确定这一点,但目前似乎没有。)

显然,有一些方法可以重写代码来绕过警告,但我想要的是一种指示失败永远不会返回的方法(例如注释)。

我还尝试使用 @SuppressWarnings("null") 抑制警告,但这没有用。

消除警告的一种方法是添加:(assert x != null;假设您已打开设置以在 null 分析中包含断言)

在 GCC C++ 中,我可以这样做:void fn __attribute__ ((noreturn))

4

2 回答 2

15

一种半传统的方法如下:

public RuntimeException fail(String message) {
  throw new RuntimeException(message);
}

所以你可以写throw fail("x is null")。当然,fail最终总是会抛出,而不是throw,但这足以让编译器放心,该行总是会抛出。

于 2012-06-28T17:12:10.363 回答
0

你试过org.eclipse.jdt.annotation.Nullable注释吗?

http://git.eclipse.org/c/jdt/eclipse.jdt.core.git/tree/org.eclipse.jdt.annotation/src/org/eclipse/jdt/annotation/Nullable.java

于 2012-06-28T17:12:13.267 回答