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() может изменить внутреннюю работу, если вам когда-нибудь понадобится.
Вероятно, вы можете изменить настройку ворса.