Tengo un largo conjunto de comparaciones que hacer en Java y me gustaría saber si una o más de ellas resultan verdaderas. La cadena de comparaciones era larga y difícil de leer, así que la dividí para facilitar la lectura y automáticamente usé un operador de acceso directo en |=
lugar de negativeValue = negativeValue || boolean
.
boolean negativeValue = false;
negativeValue |= (defaultStock < 0);
negativeValue |= (defaultWholesale < 0);
negativeValue |= (defaultRetail < 0);
negativeValue |= (defaultDelivery < 0);
Espero que negativeValue
sea cierto si alguno de los valores predeterminados de <algo> es negativo. ¿Es esto válido? ¿Hará lo que espero? No pude verlo mencionado en el sitio de Sun o stackoverflow, pero Eclipse no parece tener ningún problema y el código se compila y se ejecuta.
De manera similar, si quisiera realizar varias intersecciones lógicas, ¿podría usar en &=
lugar de &&
?
fuente
||=
operador inexistente , pero|=
es la forma de combinación del operador u bit a bit.|=
un cortocircuito sería inconsistente con otros operadores de asignación compuesta, yaa |= b;
que no sería lo mismo quea = a | b;
, con la advertencia habitual de evaluara
dos veces (si es que importa). Me parece que la gran decisión de comportamiento lingüístico fue no tomar||=
, así que me pierdo el punto.