繁体   English   中英

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

[英]What does return; (without value) mean?

我提取某人的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; 只退出该语句的方法,而不是运行以下语句。

对,那是正确的。 请查看http://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html的底部:

退货声明

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

return ++ count; 返回值的数据类型必须与方法声明的返回值的类型匹配。 当方法声明为void时,请使用不返回值的return形式。

返回;

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM