最干净的方式来切换Java中的布尔variables?

有没有更好的方法来否定Java中的布尔值而不是简单的if-else?

if (theBoolean) { theBoolean = false; } else { theBoolean = true; } 
 theBoolean = !theBoolean; 
 theBoolean ^= true; 

如果您的variables长度超过四个字母,按键次数会减less

有几个

“明显”的方式 (对于大多数人)

 theBoolean = !theBoolean; 

“最短”的方式 (大部分时间)

 theBoolean ^= true; 

“最直观”的方式 (最不确定)

 theBoolean = theBoolean ? false : true; 

额外:切换并在方法调用中使用

 theMethod( theBoolean ^= true ); 

由于赋值运算符总是返回已经赋值的值,所以会通过按位运算符来切换值,然后返回在方法调用中使用的新赋值。

之前:

 boolean result = isresult(); if (result) { result = false; } else { result = true; } 

后:

 boolean result = isresult(); result ^= true; 

如果您使用布尔NULL值并将其视为false,请尝试以下操作:

 static public boolean toggle(Boolean aBoolean) { if (aBoolean == null) return true; else return !aBoolean; } 

如果你没有处理布尔NULL值,试试这个:

 static public boolean toggle(boolean aBoolean) { return !aBoolean; } 

这些是最干净的,因为它们显示方法签名的意图,比较容易阅读 操作员,并可以很容易地debugging。

用法

 boolean bTrue = true boolean bFalse = false boolean bNull = null toggle(bTrue) // == false toggle(bFalse) // == true toggle(bNull) // == true 

当然,如果你使用Groovy或允许扩展方法的语言,你可以注册一个扩展,只需要:

 Boolean b = false b = b.toggle() // == true