Para un boolean
es bastante fácil, un Boolean
es un poco más desafiante.
- Un
boolean
sólo tiene 2 estados posibles: true
y false
.
- A
Boolean
por otro lado, tiene 3: Boolean.TRUE
, Boolean.FALSE
o null
.
Suponiendo que usted está tratando con un boolean
(que es un tipo primitivo), entonces la cosa más fácil de hacer es:
boolean someValue = true; // or false
boolean negative = !someValue;
Sin embargo, si desea invertir una Boolean
(que es una objeto), tiene que tener cuidado con el valor null
, o puede terminar con un NullPointerException
.
Boolean someValue = null;
Boolean negativeObj = !someValue.booleanValue(); --> throws NullPointerException.
Suponiendo que este valor no es nulo, y que su empresa u organización tiene ningún código de reglas de boxeo contra el auto (ONU). En realidad, puede simplemente escribirlo en una línea.
Boolean someValue = Boolean.TRUE; // or Boolean.FALSE
Boolean negativeObj = !someValue;
Sin embargo, si usted quiere tomar el cuidado de los null
valores. Luego hay varias interpretaciones.
boolean negative = !Boolean.TRUE.equals(someValue); //--> this assumes that the inverse of NULL should be TRUE.
// if you want to convert it back to a Boolean object, then add the following.
Boolean negativeObj = Boolean.valueOf(negative);
Por otro lado, si quieres null
permanecer null
después de la inversión, entonces es posible que desee considerar el uso de la clase apache commons
BooleanUtils
(see javadoc)
Boolean someValue = null; // or Boolean.TRUE or Boolean.FALSE;
Boolean negativeObj = BooleanUtils.negate(someValue);
Algunos prefieren simplemente escribirlo todo fuera, para evitar tener la dependencia de apache.
Boolean someValue = null; // or Boolean.TRUE or Boolean.FALSE;
boolean negative = (someValue == null)? null : !someValue.booleanValue();
Boolean negativeObj = Boolean.valueOf(negative);
BoltClock tiene la respuesta óptima; Sin embargo, me gustaría señalar que "if (myBool == true)" ya es muy hablador; "if (myBool)" hace exactamente lo mismo. – phisch
@phisch: 'if ((! MyBool! = True || false) && (! (MyBool! = False || true) == falso))' – BoltClock
myBool = (myBool)? falso verdadero; (porque simplemente no puedo resistirme a la oportunidad de usar la forma ternaria, incluso si esto no es - el más conciso) – KevinDTimm