我刚开始使用新版的Eclipse 4.2 (Juno) Null Analysis。
在如下代码中:
x = foo();
if (x == null)
fail("x is null");
return x.bar();
我收到了 x 可能为 null 的警告,但它不可能是 null,因为 fail 方法总是抛出异常并且从不返回(使用更好的过程间分析可能可以自动确定这一点,但目前似乎还没有这样的分析)。显然,有一些方法可以重写代码来避免警告,但我想要的是一种方式来指示(例如一个注解),表明 fail 从不返回。我还尝试使用 @SuppressWarnings("null") 来抑制警告,但这没有起作用。可以通过添加 assert x != null;
(假设您已经打开了包括断言在 null 分析中的设置)来消除警告。在 GCC C++ 中,我可以这样做:void fn __attribute__ ((noreturn))
。