Вебинар: Стратегия без иллюзий: как превращать цели в результаты - 19.08
Анализатор обнаружил группу констант, которая выглядит как набор битовых флагов: идущие подряд static final поля, переменные или enum поля, инициализированные целочисленными значениями, которые являются степенями двойки. В такой группе одно из значений повторяется. Скорее всего, это опечатка, допущенная при добавлении нового флага или при копировании соседней строки.
Рассмотрим пример:
public class FilePermission {
public static final int READ = 0x01;
public static final int WRITE = 0x02;
public static final int EXECUTE = 0x04;
public static final int DELETE = 0x04; // <=
}
Константы EXECUTE и DELETE разделяют одно и то же значение. Проверка вида (mask & DELETE) != 0 будет истинной для маски, в которой выставлено только право на выполнение, а сброс одного флага приведёт к сбросу второго.
Исправленный вариант:
public class FilePermission {
public static final int READ = 0x01;
public static final int WRITE = 0x02;
public static final int EXECUTE = 0x04;
public static final int DELETE = 0x08;
}
Была ли полезна эта страница документации?
Мы ответим вам на:
Если вы так и не получили ответ, пожалуйста, проверьте, отфильтровано ли письмо в одну из следующих стандартных папок: