2010-08-04 9 views
10

Sto cercando tramite il codice e si chiede che cosa questo significa:Che tipo di sintassi Java è "== null? False: true;"

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

Dev'essere qualcosa che converte la stringa di ritorno da getParameter() in un valore booleano.

Ma non ho mai visto questo tipo di Java con un punto interrogativo e due punti (tranne in un ciclo foreach). Qualsiasi hel apprezzato!

+1

volte odio dichiarazioni come questa, senza staffe adeguate. dovrebbe essere più leggibile in questo modo: 'Boolean foo = (request.getParameter (" foo ") == null)? false: true; ' – mauris

+2

Tieni presente che se il parametro request è foo = false la variabile foo verrà impostata su' true'. –

risposta

25

E' l'operatore ternario. Il frammento:

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

è equivalente a:

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

o (ottimizzata):

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

La forma di base del gestore è lungo le linee di:

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

Questo è l'operatore ternario:

(condition) ? if-true : if-false 

Il tutto potrebbe essere stato scritto come:

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

Quale IMO è il codice più pulito.

+3

+1 per indicare che in questo caso è usato inutilmente. – Jesper

+0

Perché tutti stanno modificando le loro risposte? – NullUserException

+0

+1 per indicare questo. Generalmente non è il massimo usare l'operatore ternario per restituire un valore booleano. – kiamlaluno

0

E 'una scorciatoia per

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

E a mano lunga per il modo più sensato di scriverlo ;-) – EJP

0

Il tutto potrebbe essere solo

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