Для меня так и осталась загадкой магия переменной isFound. Как она работает, каким образом машина именно по ней вычисляет, что снова пришла колонка, которая уже включена в список realOrder (дубликат колонки)?
public static void configureColumns(Column... newOrder) {
realOrder = new int[values().length];
for (Column column : values()) {
realOrder[column.ordinal()] = -1;
boolean isFound = false;
for (int i = 0; i < newOrder.length; i++) {
if (column == newOrder[i]) {
if (isFound) {
throw new IllegalArgumentException("Column '" + column.columnName + "' is already configured.");
}
realOrder[column.ordinal()] = i;
isFound = true;
}
}
}
}
cyprusScorpion
41 уровень
магия переменной isFound
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Стас Пасинков Software Developer в Zipy Master
23 марта 2018, 11:16решение
изначально выставляется в false
потом если что-то было найдено в первый раз - выставляется в true
и затем если что-то снова было найдено - кидается исключение
+2
cyprusScorpionExpert
23 марта 2018, 11:48
Благодарю за ответ.
Логика переменной понятна.
if (isFound) означает: " Если ранее была обнаружена такая же колонка".
То есть можно было написать if(isFound == true), это было бы по логике кода одно и то же?
+2
--------Master
23 марта 2018, 13:11
По сути, получается тафтология: точно так же можно дописать по той же логике "if((isFound == true)==true)", а для этого выражения также выполнять проверку на равенство с true и так до бесконечности))
Переменные boolean сами по себе являются результатами таких проверок, поэтому сравнивать их не стоит - даже само название переменной указывает ("если (найдено), то...")
+5
cyprusScorpionExpert
23 марта 2018, 13:52полезный
Благодарю, полезный ответ.
+1