Самый чистый способ переключения логической переменной в Java?
Вопрос
Есть ли лучший способ отрицать логическое значение в Java, чем простое if-else?
if (theBoolean) {
theBoolean = false;
} else {
theBoolean = true;
}
Решение
theBoolean = !theBoolean;
Другие советы
theBoolean ^= true;
Меньше нажатий клавиш, если ваша переменная длиннее четырех букв
Есть несколько
Очевидное " способ (для большинства людей)
theBoolean = !theBoolean;
Самый короткий " способ (большую часть времени)
theBoolean ^= true;
Самый визуальный " способ (наиболее неопределенно)
theBoolean = theBoolean ? false : true;
Дополнительно: переключение и использование в вызове метода
theMethod( theBoolean ^= true );
Так как оператор присваивания всегда возвращает то, что было назначено, это переключит значение с помощью побитового оператора, а затем вернет вновь присвоенное значение, которое будет использовано при вызове метода.
Если вы используете логические значения NULL и считаете их ложными, попробуйте следующее:
static public boolean toggle(Boolean aBoolean) {
if (aBoolean == null) return true;
else return !aBoolean;
}
Если вы не передаете логические нулевые значения, попробуйте следующее:
static public boolean toggle(boolean aBoolean) {
return !aBoolean;
}
Это те самые самый чистый поскольку они показывают намерение в сигнатуре метода, их легче читать по сравнению с ! оператор, и может быть легко отлажен.
Использование
boolean bTrue = true
boolean bFalse = false
boolean bNull = null
toggle(bTrue) // == false
toggle(bFalse) // == true
toggle(bNull) // == true
Конечно, если вы используете Заводной или язык, который допускает методы расширения, вы можете зарегистрировать расширение и просто выполнить:
Boolean b = false
b = b.toggle() // == true
Если вы не занимаетесь чем-то особенно профессиональным, вы всегда можете использовать класс Util. Например, класс утилит из проекта для класса.
public class Util {
public Util() {}
public boolean flip(boolean bool) { return !bool; }
public void sop(String str) { System.out.println(str); }
}
затем просто создайте объект Util
Util u = новый Util ();
и есть что-то для возврата System.out.println (u.flip (bool));
Если вы собираетесь использовать одно и то же снова и снова, используйте метод, и особенно, если он используется в разных проектах, создайте класс Util. Не знаю, что такое отраслевой стандарт. (Опытные программисты не стесняются меня поправлять)
До того, как:
boolean result = isresult();
if (result) {
result = false;
} else {
result = true;
}
После:
boolean result = isresult();
result ^= true;