Der "ternäre Ausdruck" x ? y : z
kann nur für die bedingte Zuweisung verwendet werden . Das heißt, Sie könnten so etwas tun:
String mood = inProfit() ? "happy" : "sad";
weil der ternäre Ausdruck etwas zurückgibt (vom Typ String
in diesem Beispiel).
Es ist nicht wirklich als kurze Inline gedacht if-else
. Insbesondere können Sie es nicht verwenden, wenn die einzelnen Teile keinen Wert oder Werte inkompatibler Typen zurückgeben. (Während Sie dies tun könnten, wenn beide Methoden zufällig denselben Wert zurückgeben, sollten Sie ihn nicht nur zu Nebenwirkungszwecken aufrufen.)
Der richtige Weg, dies zu tun, wäre also nur ein if-else-Block:
if (jXPanel6.isVisible()) {
jXPanel6.setVisible(true);
}
else {
jXPanel6.setVisible(false);
}
was natürlich verkürzt werden kann
jXPanel6.setVisible(jXPanel6.isVisible());
Diese beiden letzteren Ausdrücke sind für mich besser lesbar, da sie klarer kommunizieren, was Sie versuchen zu tun. (Und übrigens, haben Sie Ihre Bedingungen falsch herum verstanden? Es sieht so aus, als wäre dies sowieso ein No-Op und kein Toggle).
Verwechseln Sie nicht die geringe Anzahl von Zeichen mit der Lesbarkeit . Der entscheidende Punkt ist das, was am leichtesten zu verstehen ist; und ein leichter Missbrauch von Sprachmerkmalen ist ein eindeutiger Weg, um die Leser zu verwirren oder sie zumindest zu einer mentalen Doppelaufnahme zu bewegen.