返回啥; (没有价值)是啥意思?

Posted

技术标签:

【中文标题】返回啥; (没有价值)是啥意思?【英文标题】:What does return; (without value) mean?返回什么; (没有价值)是什么意思? 【发布时间】:2013-02-18 02:37:27 【问题描述】:

我提取了某人的 APK(android 应用)查看 Java 源代码,看到了很多 return; 代码,甚至在 void 方法上。

例如:

public void doSomething()
do
    return; //This line makes the code below unreachable and can't compile in Eclipse
    switch(num)
        ...
        default:
            return;
    
while(...)
...

为什么这个应用似乎在我的手机上运行良好?

我猜return; 就像是打破方法的捷径。对吗?

【问题讨论】:

反编译器并不总是完美的。 每个方法最终都会返回。因此,具有void 返回类型的方法可以return; 或将其排除在外。它不是必需的,是一个偏好问题。 可能重复:***.com/questions/744676/… @Vulcan 所以它们是代码的损坏部分? @squiguy 这不仅仅是一个偏好问题。它提供了异常无法实现的有用目的——它允许您在不破坏执行路径的情况下结束执行路径。我的意思是,您可以在该调用之外返回并继续下一行,而不是在第一个 catch 语句中抛出异常并输入完全不同的执行路径。因此,虽然 void 方法一直不需要它,但它仍然不仅仅是个人喜好。 【参考方案1】:

是的,没错。看底部http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html

返回声明

最后一个分支语句是返回语句。这 return 语句退出当前方法,并控制流程 返回到调用方法的位置。 return 语句有两个 形式:一种返回值,另一种不返回。返回一个 值,只需将值(或计算 value) 在 return 关键字之后。

返回++计数;返回值的数据类型必须与 方法声明的返回值的类型。声明方法时 void,使用不返回值的return形式。

返回;

【讨论】:

谢谢!我从来不知道void方法可以使用return【参考方案2】:

如果方法返回 void 则 return; 只是在该语句处退出方法,而不运行以下语句。

【讨论】:

@HussainAkhtarWahid 是的,我认为它没有任何回报【参考方案3】:

回答你的第一个问题:我假设这段代码是反编译的。请注意,反编译器不是二进制 dex 代码与用于生成这些二进制文件的任何 Java 代码的一对一转换器。他们经常在解析不同的控制结构(如循环和开关)时遇到问题。此外,二进制文件可能会被混淆,这意味着在编译后二进制文件被修改为完全可操作,但更难反编译和逆向工程(基本上是为了防止你在这里尝试做的事情:))。他们可以添加死代码,例如不应该存在的 return 语句、mangle 循环和 if 语句来混淆反编译的代码等。

【讨论】:

感谢它确实解释了为什么所有 forwhile 循环似乎都有问题。【参考方案4】:

return 关键字基本上用在 void 方法中,它有助于打破条件语句从方法中出来。

【讨论】:

以上是关于返回啥; (没有价值)是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章

C++11 中的“return ”语句是啥意思?

在VB中,Value是啥意思,该怎么用?

r语言中value是啥意思

我试图了解下面预测模型的形状值。请帮助我理解价值和解释器的o / p是啥意思?

value是啥意思

SymPy的dsolve的返回值中的r()函数是啥意思?