2010-08-04 12 views
10

Busco a través de código y preguntando lo que esto significa:¿Qué tipo de sintaxis de Java es "== null? False: true;"

Boolean foo = request.getParameter("foo") == null? false:true; 

Tiene que ser algo que convierte la cadena de regresar de getParameter() en un valor booleano.

Pero nunca he visto este tipo de Java con un signo de interrogación y dos puntos (excepto en un ciclo foreach). ¡Cualquier hel apreciado!

+1

veces odio declaraciones como esta sin los soportes adecuados. debería ser más fácil de leer así: 'Boolean foo = (request.getParameter (" foo ") == null)? falso: verdadero; ' – mauris

+2

Tenga en cuenta que si el parámetro de solicitud es foo = falso, la variable foo se establecerá en' true'. –

Respuesta

25

Es el operador ternario. El fragmento:

Boolean foo = request.getParameter("foo") == null? false:true; 

es equivalente a:

Boolean foo; 
if (request.getParameter("foo") == null) 
    foo = false; 
else 
    foo = true; 

o (optimizado):

Boolean foo = request.getParameter("foo") != null; 

La forma básica del operador es a lo largo de las líneas de:

(condition) ? (value if condition true) : (value if condition false) 
16

Ese es el operador ternario:

(condition) ? if-true : if-false 

La cosa entera podría haber sido escrito como:

Boolean foo = request.getParameter("foo") != null; 

Qué OMI es un código más limpio.

+3

+1 para señalar que en este caso se usa innecesariamente. – Jesper

+0

¿Por qué todos editan sus respuestas? – NullUserException

+0

+1 para señalar esto. En general, no es lo mejor utilizar el operador ternario para devolver un valor booleano. – kiamlaluno

0

Es la abreviatura de

Boolean foo; 
if(request.getParameter("foo")==null) 
{ 
foo = false; 
} 
else { foo = true; } 
+0

Y a mano para la forma más sensata de escribirlo ;-) – EJP

0

Todo esto podría ser sólo

Boolean foo = (request.getParameter("foo") != null); 
Cuestiones relacionadas