Объяснение, необходимое для возврата булевых методов


Я просматривал некоторый код из декомпилированного файла 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;
}
2 4

2 ответа:

Это составленное условие означает, что если любое из этих 4 условий истинно, то истинно и все условие в целом.

Но тело условия пусто, поэтому ничего не происходит впоследствии. Тем не менее цикл выполняется независимо от условия.

Но вы также должны знать, что декомпиляция иногда не работает точно, так что, возможно, это ошибка декомпиляции. Это предположение еще более верно, если вы посмотрите на неправильный тип возвращаемого значения. Так что даже если этот код широко используется через все приложение я бы предложил проблему декомпиляции.

Ладно, это странно.

Условие вообще ничего не делает. Это как

if (condition) {
}

Условие цикла говорит "выполнить навсегда"

Тело цикла говорит: "Верните сразу", но это возвращает неправильный тип!!! Как это вообще может компилироваться?