Короткое выражение IF – ELSE

Я пытаюсь сделать свой код более удобочитаемым, поэтому я решил использовать несколько коротких инструкций IF.

Вот мой код, который не работает («не утверждение»):

jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false); 

Что случилось с этим? Нужны скобки? Где?

«Тройное выражение» x ? y : z x ? y : z может использоваться только для условного присвоения . То есть вы можете сделать что-то вроде:

 String mood = inProfit() ? "happy" : "sad"; 

потому что тернарное выражение возвращает что-то (типа String в этом примере).

Он не предназначен для использования в качестве короткого, встроенного if-else . В частности, вы не можете использовать его, если отдельные части не возвращают значение или не возвращают значения несовместимых типов. (Таким образом, хотя вы могли бы сделать это, если бы оба метода возвращали одно и то же значение, вы не должны вызывать его только для побочных эффектов).

Поэтому правильный способ сделать это будет только с блоком if-else:

 if (jXPanel6.isVisible()) { jXPanel6.setVisible(true); } else { jXPanel6.setVisible(false); } 

что, конечно, можно сократить до

 jXPanel6.setVisible(jXPanel6.isVisible()); 

Оба этих выражения для меня более читабельны, поскольку они более четко сообщают, что именно вы пытаетесь сделать. (И, между прочим, вы не ошиблись в своих условиях? Похоже, что это не-op, а не переключение).

Не смешивайте количество символов с читабельностью . Ключевым моментом является то, что наиболее легко понять; и мягко злоупотреблять языковыми особенностями – это определенный способ сбить с толку читателей или, по крайней мере, заставить их сделать ментальное двойное взятие.

 jXPanel6.setVisible(jXPanel6.isVisible()); 

или в вашей форме:

 jXPanel6.setVisible(jXPanel6.isVisible()?true:false); 

Тернарный оператор может быть только правой стороной задания, а не собственным заявлением.

http://www.devdaily.com/java/edu/pj/pj010018/

Как указывали другие, что-то вроде формы

 x ? y : z 

является выражением, а не (полным) утверждением. Это значение rvalue, которое нужно использовать где-то – например, с правой стороны задания или параметр функции и т. Д.

Возможно, вы могли бы посмотреть на это: http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

Я немного опаздываю на вечеринку, но для будущих читателей.

Из того, что я могу сказать, вы просто хотите правильно переключить состояние видимости? Почему бы просто не использовать ! оператор?

 jxPanel6.setVisible(!jxPanel6.isVisible); 

Это не утверждение if, но я предпочитаю этот метод для кода, связанного с вашим примером.

  • Предотrotation использования System.exit () API
  • Почему Java-коллекции не могут напрямую хранить типы примитивов?
  • Несколько примечаний с пружиной @RequestMapping
  • Как получить доступ к ресурсам в JAR-файле?
  • Java в Eclipse: где я могу поместить файлы в файловую систему, которые я хочу загрузить с помощью getResource? (например, изображения для ImageIcon)
  • Как class может иметь свой собственный тип, это не бесконечная recursion?
  • Word Wrap в JButtons
  • У пользователя базы данных HSQL отсутствует привилегия или объект не найдена ошибка
  • Повернуть прямоугольник Java Graphics2D?
  • Могут ли нестатические методы изменять статические переменные
  • Поворотная квадратная панель в Java GUI
  • Давайте будем гением компьютера.