Alternative if Schreibweise mit ?

  • Themenstarter Themenstarter Hellas
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
H

Hellas

Gast
Hallo,

hat mir jemand einen link zum üben bzw. kann mir jemand sagen wie man die alternative if Schreibweise nennt wenn man mit dem ?-zeichen abfragt?
 
das ist der tertiäre operator

und das ist praktisch eine funktion die den entsprechenden if oder else wert zurück gibt

String test = (x==3)?"if wert":"else wert";
 
das heist ternärer Operator und geht so:

Bedingung ? Truecase : Falsecase;

und würd ich nicht benutzen...(rein aus lesbarkeit und sideeffects)

EDIT:
und noch ein link
siehe SlaterB....
 
ah ternärer... ok

und zum thema nicht verwenden.

also, wir haben sowas

Code:
String ausgabe = (x.getName==null)?"":x.getName();
häufig in userem code, ich halte das nicht für unleserlich...
 
für 'häufig' ists aber zuviel,
da geht auch
String ausgabe = Helper.formatName(x,"");

😉
 
naja ich benutze es auch (sehr selten)....vor allem in genau solchen Util Dingen.
aber ist eben gefährlich..zB
Code:
public class X {

	public static void main(String[] args) {
		boolean b = true;
		Number number = b ? new Integer(3) : new Float(3);

		System.out.println(number);

		if (b) {
			number = new Integer(3);
		} else {
			number = new Float(3);
		}
		System.out.println(number);
	}
}
 
:shock: Ich hätte nicht gedacht, dass so ein Furzprogramm mich so puzzlen könnte :shock:
Was zum ... passiert da? Geht da irgendwas beim Autoboxing schief? ???:L

Zum eigentlichen Thema: Ich finde, man kann den ?:-Operator verwenden, wenn es "elegant" ist, und/oder damit deutlicher wird, was gemacht wird.
Code:
String s = null;
if (someBoolean) 
{
    s = "Jupp";
}
else 
{
    s = "Nö";
}
vs.
Code:
String s = someBoolean ?  "Jupp" : "Nö";
 
Full ACK to Marco.

Wenn es superkurz und völlig eindeutig ist, kann man den ternären Opa benutzen. Für alle anderen Fälle trägt er nicht eben zur Übersichtlichkeit bei und ist demnach zu meiden.
 
Marco13 hat gesagt.:
:shock: Ich hätte nicht gedacht, dass so ein Furzprogramm mich so puzzlen könnte :shock:
Was zum ... passiert da? Geht da irgendwas beim Autoboxing schief? ???:L

ist per Definition so
Otherwise, binary numeric promotion (§5.6.2) is applied to the operand types, and the type of the conditional expression is the promoted type of the second and third operands. Note that binary numeric promotion performs unboxing conversion (§5.1.8) and value set conversion (§5.1.13).

von
http://java.sun.com/docs/books/jls/third_edition/html/expressions.html#15.25

EDIT:
ist übrigens von Java Puzzlers ;-)
(mit CharSequence: String und StringBuffer würds ohne Probleme hinhauen)
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben