短IF – ELSE语句
我试图让我的代码更具可读性,所以我决定使用一些简短的IF语句。
这是我的代码不起作用(“不是一个声明”):
jXPanel6.isVisible() ? jXPanel6.setVisible(true) : jXPanel6.setVisible(false);
这有什么问题? 需要括号? 哪里?
“三元expression式” x ? y : z
x ? y : z
只能用于条件赋值 。 也就是说,你可以做这样的事情:
String mood = inProfit() ? "happy" : "sad";
因为三元expression式正在返回一些东西(在这个例子中是String
types)。
这不是真的用来作为一个简短的,在线if-else
。 尤其是,如果各个部分不返回值,或者返回不兼容types的值,则不能使用它。 (所以,如果两个方法碰巧返回相同的值,则可以这样做,但不应仅为了副作用而调用它)。
所以正确的做法就是使用if-else块。
if (jXPanel6.isVisible()) { jXPanel6.setVisible(true); } else { jXPanel6.setVisible(false); }
这当然可以缩短到
jXPanel6.setVisible(jXPanel6.isVisible());
对于我来说,后面这两个expression式都更具可读性,因为它们可以更清楚地expression你正在做什么。 (顺便说一下,你是否弄错了你的条件?看起来这是一个无用的操作,而不是一个切换)。
不要混淆低字符数与可读性 。 关键是最容易理解的是什么; 轻微地滥用语言特征是迷惑读者的一个明确的方法,或者至less让他们做一个心理上的双重考虑。
jXPanel6.setVisible(jXPanel6.isVisible());
或者以你的forms:
jXPanel6.setVisible(jXPanel6.isVisible()?true:false);
三元运算符只能是一个赋值的右边,而不是它自己的一个语句。
正如其他人所指出的那样,
x ? y : z
是一个expression式,而不是(完整的)语句。 这是一个需要在某个地方使用的右值 – 比如在赋值的右边,或者函数的参数等等。
也许你可以看看这个: http : //download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html
我对晚会有点迟,但对未来的读者来说。
从我可以告诉,你只是想切换能见度状态吗? 为什么不使用!
运营商?
jxPanel6.setVisible(!jxPanel6.isVisible);
这不是一个if语句,但我更喜欢这个方法代码相关的例子。