有没有办法将Java方法标记(例如注释)为永不返回?

有没有办法将Java方法标记(例如注释)为永不返回?,java,eclipse,Java,Eclipse,我刚刚开始使用新的Eclipse4.2(Juno)空分析 关于这样的代码: x = foo(); if (x == null) fail("x is null"); return x.bar(); 我收到x可能为空的警告。但这不可能,因为失败总是抛出,因此永远不会回来。(通过更好的程序间分析,它可能会自动确定这一点,但目前似乎没有。) 显然,有一些方法可以重写代码来绕过警告,但是我想要的是一种方法来指示失败永远不会返回(例如注释) 我还尝试使用@SuppressWarnings(“nu

我刚刚开始使用新的Eclipse4.2(Juno)空分析

关于这样的代码:

x = foo();
if (x == null)
    fail("x is null");
return x.bar();
我收到x可能为空的警告。但这不可能,因为失败总是抛出,因此永远不会回来。(通过更好的程序间分析,它可能会自动确定这一点,但目前似乎没有。)

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

我还尝试使用@SuppressWarnings(“null”)来抑制警告,但没有成功

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


< GCC++中的P>可以做到:<代码> Vo.fn*属性>((NordEurn)< <代码> < /P> > P:一种半传统的方式是:

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

因此,您可以编写
抛出失败(“x为null”)
。当然,
fail
最终总是会抛出,而不是
抛出
,但这足以让编译器确信那一行总是抛出。

您尝试过
org.eclipse.jdt.annotation.Nullable
注释吗


我不知道这种情况。你是否需要这个,或者这更像是一个学术研究?这不是关键,因为我可以很容易地解决它,但它是从实际的生产代码。这如何解决用户的问题?他已经在做null的显式检查了。有趣的解决方法。有人推荐使用此模式吗?作为参考,它是Guava在
Throwables
实用程序类中使用的模式。为什么这比
public RuntimeException fail(String message){return new RuntimeException(message);}
更好?我只是问一个问题,不是表达一种偏好。主要是你可以用任何一种方式;如果您不需要向编译器证明任何东西,那么您可以直接调用它而不使用
抛出
。尤其是在我的代码中,它就是这样工作的。