Ответ 1
Терминальное выражение 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());
Оба этих последних выражения для меня более читабельны тем, что они более четко сообщают, что именно вы пытаетесь сделать. (И, между прочим, вы случайно не изменили свои условия? Похоже, что это не операция, а не переключение).
Не смешивайте количество символов с читабельностью. Ключевым моментом является то, что наиболее легко понять; и мягко злоупотреблять языковыми особенностями - это определенный способ сбить с толку читателей или, по крайней мере, заставить их сделать ментальное двойное взятие.