java - operator - js var ||
EvaluaciĆ³n ternaria de Java(inmediata si) (4)
No puedo encontrar la parte relevante de la especificación para responder a esto. En una declaración de operador condicional en Java, ¿se evalúan los argumentos verdadero y falso?
Entonces, ¿podría el siguiente lanzar una NullPointerException?
Integer test = null;
test != null ? test.intValue() : 0;
Como quería la especificación, aquí está (a partir de la sección 15.25 ¿Operador condicional?: , La última oración de la sección):
La expresión de operando no elegida no se evalúa para esa evaluación particular de la expresión condicional.
No, no pudo. Eso es lo mismo que
Integer test = null;
if ( test != null ) {
test = test.intValue();
}
else {
test = 0;
}
Sé que es un post antiguo, pero mira un caso muy similar y luego vota: P
Respondiendo a la pregunta original: solo se evalúa un operando PERO:
@Test
public void test()
{
Integer A = null;
Integer B = null;
Integer chosenInteger = A != null ? A.intValue() : B;
}
Esta prueba arrojará siempre NullPointerException
y, en este caso, IF statemat no es equivalente a?: Operator.
El motivo está aquí http://docs.oracle.com/javase/specs/jls/se5.0/html/expressions.html#15.25 . La parte sobre el boxeo / unboxing está enredada, pero se puede entender fácilmente mirando:
"Si uno de los segundo y tercer operandos es de tipo
boolean
y el tipo del otro es de tipoBoolean
, entonces el tipo de expresión condicional esboolean
".
Lo mismo se aplica a Integer.intValue()
¡Atentamente!
la sintaxis es incorrecta
Prueba de enteros = (test! = Null)? test.intValue (): 0;
Espero eso ayude ....