Я пытаюсь сделать свой код более читабельным, поэтому решил использовать несколько коротких операторов IF.
Вот мой код, который не работает («не утверждение»):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
Что в этом плохого? Нужны брекеты? Где?
java
if-statement
Мончек
источник
источник
Ответы:
«Тернарное выражение»
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()?true:false);
источник
<bool condition> ? true : false
потому что это в точности эквивалентно просто<bool condition>
.Тернарный оператор может быть только правой частью присваивания, а не собственным утверждением.
http://www.devdaily.com/java/edu/pj/pj010018/
источник
Как указывали другие, что-то в форме
является выражением, а не (полным) утверждением. Это rvalue, которое нужно где-то использовать - например, в правой части присваивания, или параметр функции и т. Д.
Возможно, вы могли бы посмотреть на это: http://download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
источник
Я немного опоздал на вечеринку, но для будущих читателей.
Насколько я могу судить, вы просто хотите переключить состояние видимости, верно? Почему бы просто не воспользоваться
!
оператором?Это не оператор if, но я предпочитаю этот метод для кода, связанного с вашим примером.
источник
Вы можете сделать это так просто, я сделал это в ответных хуках:
(myNumber == 12) ? "true" : "false"
он был равен этой длинной функции if ниже:
if (myNumber == 12) { "true" } else { "false" }
Надеюсь, это поможет ^ _ ^
источник