返回啥; (没有价值)是啥意思?
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 语句来混淆反编译的代码等。
【讨论】:
感谢它确实解释了为什么所有for
和 while
循环似乎都有问题。【参考方案4】:
return 关键字基本上用在 void 方法中,它有助于打破条件语句从方法中出来。
【讨论】:
以上是关于返回啥; (没有价值)是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章