我刚开始使用新的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))
答案 0 :(得分:11)
这样做的一种半传统方式如下:
public RuntimeException fail(String message) {
throw new RuntimeException(message);
}
所以你可以写throw fail("x is null")
。当然,fail
总是最终会进行投掷,而不是throw
,但它足以让编译器放心该线总是会抛出。
答案 1 :(得分:0)
您是否尝试过org.eclipse.jdt.annotation.Nullable
注释?