Android Studio ошибочно отмечает условные выражения как всегда истинные - PullRequest
1 голос
/ 03 августа 2020

У меня есть класс, который должен быть подклассом. Есть переменная и метод, который смотрит на переменную:

protected int base = 10;

private void rebuildDisplay() {
    if (base == 10) {
        dealWithBase10YadaYada(X);
    } else {
        dealWithOtherBase(X, base);
    }
}

Android Studio помечает оператор if (base == 10) с помощью Condition 'base == 10' is always 'true'.

Но вот что: хотя base всегда равно 10 в моем классе , мой подкласс будет изменять base на другие значения. Итак, base == 10 не всегда верно.

Есть ли способ запретить AS делать предположения о защищенных или c переменных? Следует ли мне полностью отключить этот тест, и если да, то как? Черт возьми, я должен сообщать об ошибке?

1 Ответ

1 голос
/ 03 августа 2020

Это проблема (а не ошибка), потому что она противоречит инкапсуляции и связывает реализацию вашего класса с этой переменной. Скажем, есть более эффективный способ делать все, что вы хотите, без использования базы; Вы не можете изменить свой код, потому что пользователи полагаются на базу, и это нарушит код.

Метод setBase () может изменить его внутреннюю работу, если вам когда-нибудь понадобится.

Вероятно, есть параметр lint, который вы можете изменить.

...