2010-08-04 7 views
10

Suche durch Code und fragen, was dies bedeutet:Welche Art von Java-Syntax ist "== null? False: true;"

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

Es muss etwas sein, das die Rückkehr String aus getParameter() in einen Boolean umwandelt.

Aber ich habe diese Art von Java nie mit einem Fragezeichen und Doppelpunkt (außer in einer foreach-Schleife) gesehen. Jeder hel geschätzt!

+1

ich manchmal Aussagen hassen wie dies ohne richtige Klammern sein könnte. sollte besser lesbar sein wie folgt: 'Boolean foo = (request.getParameter (" foo ") == null)? false: true; ' – mauris

+2

Beachten Sie, dass, wenn der Anfrageparameter foo = false ist, die Variable foo auf' true' gesetzt wird. –

Antwort

25

Es ist der ternäre Operator ist. Die Schnipsel:

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

entspricht:

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

oder (optimiert):

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

Die Grundform des Bedieners entlang der Linien von:

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

Das ist der ternäre Operator ist:

(condition) ? if-true : if-false 

Das Ganze geschrieben haben könnte als:

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

Welche IMO saubereren Code ist.

+3

+1 für den Hinweis, dass es in diesem Fall unnötig verwendet wird. – Jesper

+0

Warum editieren alle ihre Antworten? – NullUserException

+0

+1 für den Hinweis darauf. Im Allgemeinen ist es nicht das Beste, den ternären Operator zu verwenden, um einen booleschen Wert zurückzugeben. – kiamlaluno

0

Es ist eine Abkürzung für

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

Und Longhand für den vernünftigsten Weg, es zu schreiben ;-) – EJP

0

Das Ganze nur

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