我有一个关于在语句if() while()或for()语句中使用的返回语句的问题.正如您在下面的方法中所看到的,它期望我return是一个String值.问题是,如果我return在if语句块中使用语句,编译器将返回错误missing return statement.
public String myMethod()
{
if(condition)
{
return x;
}
}
Run Code Online (Sandbox Code Playgroud)
当然,我可以将方法标题更改为void并使用System.out.println而不是return.但这是正确的方法吗?我错过了什么吗?
任何帮助都非常感谢.
我刚开始使用新的Eclipse 4.2(Juno)Null Analysis.
在这样的代码:
x = foo();
if (x == null)
fail("x is null");
return x.bar();
Run Code Online (Sandbox Code Playgroud)
我收到的警告是x可能为空.但它不可能,因为失败总是抛出,因此永远不会回来.(通过更好的程序间分析,它可能会自动确定,但目前似乎没有.)
显然,有一些方法可以重写代码以绕过警告,但我想要的是一种表示失败的方法(例如注释)永远不会返回.
我也尝试使用@SuppressWarnings("null")来抑制警告,但这不起作用.
摆脱警告的一种方法是添加:( assert x != null;假设您已打开设置以在null分析中包含断言)
在GCC C++中我可以做到: void fn __attribute__ ((noreturn))