Самый чистый способ переключения логической переменной в Java?

StackOverflow https://stackoverflow.com/questions/224311

  •  03-07-2019
  •  | 
  •  

Вопрос

Есть ли лучший способ отрицать логическое значение в 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;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top