【问题标题】:return void in a void method?在 void 方法中返回 void?
【发布时间】:2013-05-06 20:11:43
【问题描述】:

我知道我能做到:

void someMethod(){
 return;
 }

但我在

上遇到语法错误
void someMethod(){
return void;
}

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

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

【问题讨论】:

  • 它增加了额外的冗长。所以开发人员可能会说“让我们让它更短,因为我们可能要写十亿次。”............
  • 为什么要退货?我不添加任何一行。它比两者都短。
  • void 是一个类型而不是一个值。这就像在做return int
  • @granadaCoder 在我看来,Java 开发人员总是喜欢更多的冗长而不是更少。

标签: java methods syntax


【解决方案1】:

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

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

我很乐意让您在 JDK 源代码中找到许多类似这样的方法。

【讨论】:

  • +1,我也是。也许在void 方法中提到return 语句仅在流控制方面有用。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • 那么什么都不是 void 的值?
    【解决方案4】:

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

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

    如果您希望返回某些内容,那么您可以通过参数化类型Voidreturn null;,就像在这个answer 中一样,但这是非常规的。最好的办法是完全省略 return 或只写 return;

    【讨论】:

      【解决方案5】:

      return x; 表示控件正在离开方法,其结果是x 的值。

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

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2015-10-03
        • 1970-01-01
        • 1970-01-01
        • 2020-03-08
        • 2012-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多