布尔方法返回值的解释说明需要

4

我一直在查看反编译APK文件中的一些代码,并遇到了这种返回布尔条件的语法,这是我以前没有见过的。有人能解释一下这是如何工作的吗?

public static boolean is2G(NetworkType paramNetworkType)
{
    if ((EDGE.equals(paramNetworkType)) || (IDEN.equals(paramNetworkType)) || (CDMA.equals(paramNetworkType)) || (GPRS.equals(paramNetworkType)));
    for (int i = 1; ; i = 0)
        return i;
}

4
那段代码甚至不应该编译通过... - iluxa
通常情况下,如果您拿到反编译的代码并尝试编译它,但无法正常工作,那么这很可能是反编译过程中出现了错误。 - corsiKa
2个回答

5

这个组合条件意味着如果这4个条件中的任何一个或全部都为真,则整个条件为真。

但是条件体为空,因此之后什么也不会发生。然而,循环仍然独立于条件执行。

但您还应该注意,反编译有时不会完全按预期工作,因此可能存在反编译错误。如果您查看错误的返回类型,则更加正确。因此,即使此代码在整个应用程序中广泛使用,我仍建议检查反编译问题。


不是这样的。请注意if()语句末尾的分号。 - iluxa
这种语法在整个应用程序中的许多地方都被广泛使用。 - Ty Smith
我猜是这样,只是奇怪的是在应用程序的其余部分中没有任何可识别的混淆。可能是反编译出了问题..(使用的是dex2jar)。 - Ty Smith
我也在使用dex2jar,我注意到它的工作非常出色,但有时会出现像这样的错误。 - RoflcoptrException

0

好的,这很奇怪。

这个条件根本没有起到任何作用。就像

if (condition) {
}

循环条件表示“永久执行”

循环体表示“立即返回”,但它返回了错误的类型!!!这怎么可能编译通过?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接