0

我知道我可以这样做:

void someMethod(){
 return;
 }

但我得到一个语法错误

void someMethod(){
return void;
}

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

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

4

5 回答 5

6

我认为两者都应该被回避。我更喜欢这个:

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

我愿意你会在 JDK 源代码中找到很多类似这样的方法。

于 2013-05-06T20:14:43.793 回答
2

void是一种类型,而不是表达式,因此尝试写入return void与尝试写入相同return int:语法上无效。

于 2013-05-06T20:19:47.030 回答
2

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

于 2013-05-06T20:15:44.833 回答
1

return x;表示控件正在离开该方法并且其结果是 的值x

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

该类型void是具有零值的类型,因此对于void方法来说没有任何x意义return x

所有非 void 方法必须做以下三件事之一:

  1. 永远无法退出。
  2. 异常完成异常。
  3. 以零或一个返回值正常结束。

由于void唯一具有零可能值的类型(具有private未调用 ctor 的类不计入,因为),因此在非方法null中没有可能是有意义的。returnvoidreturn

于 2013-05-06T20:20:21.320 回答
1

当您调用 时return void;,您以不正确的方式使用了保留关键字。由于它不会void以这种方式期望关键字,因此会导致错误。

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

如果您更愿意返回一些东西,那么您可以return null;通过参数化一个类型Void,就像在这个答案中一样,但这是非常规的。最好的办法是return完全省略或只说return;.

于 2013-05-06T20:17:30.717 回答