我提取某人的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;
就像是打破方法的捷径。是吗?
答案 0 :(得分:20)
如果方法返回void,则return;
只退出该语句的方法,而不是运行以下语句。
答案 1 :(得分:10)
是的,这是正确的。请查看http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html的底部:
返回声明
最后一个分支语句是return语句。该 return语句退出当前方法,并控制流程 返回调用方法的位置。 return语句有两个 表单:一个返回值,另一个不返回值。要退货 value,只需输入值(或计算值的表达式) 返回关键字后的值。
return ++ count;返回值的数据类型必须与 方法的声明返回值的类型。声明方法时 void,使用不返回值的return形式。
返回;
答案 2 :(得分:3)
回答你的第一个问题:我认为这段代码是反编译的。请注意,反编译器不是二进制dex代码的一对一转换器,而是用于生成这些二进制文件的任何Java代码。它们经常在解析不同的控制结构(如循环和开关)时遇到问题。此外,二进制文件可能会被混淆,这意味着在编译之后,二进制文件会以完全可操作的方式进行修改,但更难以反编译和反向工程(基本上是为了防止你在这里尝试做什么:))。他们可以添加死代码,比如不应该存在的return语句,mangle循环和if语句来混淆反编译代码等等。
答案 3 :(得分:0)
return关键字主要用于void方法,它有助于打破条件语句从方法中出来。