Android Studio ошибочно отмечает условные выражения как всегда истинные

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

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 делать предположения о защищенных или общедоступных переменных? Следует ли мне полностью отключить этот тест, и если да, то как? Черт возьми, я должен сообщать об ошибке?

1 ответ

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

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

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

Другие вопросы по тегам