什么回报; (没有价值)是什么意思?

时间:2013-03-04 03:45:02

标签: java return

我提取某人的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;就像是打破方法的捷径。是吗?

4 个答案:

答案 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方法,它有助于打破条件语句从方法中出来。