短IF – ELSE语句

我试图让我的代码更具可读性,所以我决定使用一些简短的IF语句。

这是我的代码不起作用(“不是一个声明”):

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

这有什么问题? 需要括号? 哪里?

“三元expression式” x ? y : z x ? y : z只能用于条件赋值 。 也就是说,你可以做这样的事情:

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

因为三元expression式正在返回一些东西(在这个例子中是Stringtypes)。

这不是真的用来作为一个简短的,在线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); 

三元运算符只能是一个赋值的右边,而不是它自己的一个语句。

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

正如其他人所指出的那样,

 x ? y : z 

是一个expression式,而不是(完整的)语句。 这是一个需要在某个地方使用的右值 – 比如在赋值的右边,或者函数的参数等等。

也许你可以看看这个: http : //download.oracle.com/javase/tutorial/java/nutsandbolts/expressions.html

我对晚会有点迟,但对未来的读者来说。

从我可以告诉,你只是想切换能见度状态吗? 为什么不使用! 运营商?

 jxPanel6.setVisible(!jxPanel6.isVisible); 

这不是一个if语句,但我更喜欢这个方法代码相关的例子。