返回类型为void的Method Invocation Expression求值结果是什么?
Java void方法调用表达式的求值疑问与解答
问题背景
《Oracle Java教程》指出:表达式是由变量、运算符和方法调用组成的结构,符合语言语法规则,最终会求值为单个值。
现有如下Java方法:
public void doNothing() { }
那么方法调用表达式 doNothing() 的求值结果是什么?按照常规认知,void 代表方法不返回任何内容,这和教程里的描述存在矛盾,对此感到疑惑。
解答
返回类型为void的方法调用表达式是Java表达式规则中的特殊情况——它属于无值表达式,并不会生成任何值。
教程里的描述是针对绝大多数有返回值的表达式场景,而void方法调用表达式仅执行方法体内的逻辑(此例中doNothing()没有任何执行逻辑),不会产生可被使用的返回结果。这类表达式也不能用于需要值的场景,比如尝试把它赋值给变量:var x = doNothing(); 会直接触发编译错误。
Java语言规范中明确了这类表达式的特殊性,它是“表达式最终求值为单个值”这一通用规则的例外情况。
内容的提问来源于stack exchange,提问作者efie
相关产品推荐
相关产品推荐

