2013-05-06 180 views
-1

我知道我能做到这一点:void方法返回void?

void someMethod(){ 
return; 
} 

,但我得到

void someMethod(){ 
return void; 
} 

语法错误为什么后者不允许?这对我来说更有意义。

编辑:我知道什么是无效方法,并且我根本不必从它返回(在大多数情况下可能不应该),但我不明白为什么我不能返回void方法无效。在我看来,在方法声明中应该没有关键字(比如构造函数),如果你能写return的话。

+1

http://stackoverflow.com/questions/7795303/why-cant-i-return-a-void-method-call – eidsonator 2013-05-06 20:13:17

+4

它增加了额外的冗长度。所以开发者可能会说“让我们把它缩短一点,因为我们可能要写它十亿次。”......... – granadaCoder 2013-05-06 20:13:19

+4

为什么要返回任何东西?我不添加任何一行。它比两者都短。 – duffymo 2013-05-06 20:13:51

回答

5

我认为两者都应该避免。我更喜欢这样的:

void someMethod() { 
    // do stuff; no return at bottom 
} 

我很乐意为你在JDK源代码中找到很多看起来像这样的方法。

+1

+1,我也是。也许在'void'方法中提到'return'语句只对流量控制有用。 – jlordo 2013-05-06 20:15:49

+0

是的,同意了。关于流量控制的好处。 – duffymo 2013-05-06 20:34:21

2

当您将方法声明为void时,您说这个方法没有返回值。因此试图返回一个值是非法的。此外,return void;有语法错误,因为void不是(实际上不能是)范围内变量的名称。

1

当您拨打return void;时,您以错误的方式使用保留关键字。由于它不会以这种方式预期关键字void,它会导致错误。

Void类是一个不合理的占位符类,用于保存对表示Java关键字void的Class对象的引用 。

如果您希望返回的东西,那么你就可以return null;通过参数类型Void想在这个answer,但这是标新立异。最好的办法是完全省略return或者只是说return;

+0

现在有道理 – jlordo 2013-05-06 20:21:34

2

void是一种类型,而不是表达式,所以试图编写return void与尝试编写return int相同:语法无效。

+0

那么没有什么是无效的价值? – user2097804 2013-05-06 21:01:47

0

return x;指示控制正在离开该方法并且其结果是值为x

return;指示控件正在离开方法而没有结果。

void类型是一个零值类型,因此对于void方法没有x,因此return x是有意义的。

所有非void的方法必须做的三两件事之一:

  1. 失败永远退出。
  2. 异常完成,出现异常。
  3. 用零或一个返回值正常结束。

由于void类型具有零个可能的值(与private多余构建函数类不因为null计数),存在在非void方法使得return有意义没有可能return