switch auf Strings seit Java 7

Seit Java 7 sind switch-Anweisungen auf String-Objekten möglich.

String input = javax.swing.JOptionPane.showInputDialog( "Eingabe" );

switch ( input.toLowerCase() )

{

case "kekse":

System.out.println( "Ich mag Keeeekse" );

break;

case "kuchen":

System.out.println( "Ich mag Kuchen" );

break;

case "scholokade":

case "lakritze":

System.out.println( "Hm. lecker" );

break;

default:

System.out.printf( "Kann man %s essen?", input );

}

Obwohl Zeichenkettenvergleiche nun möglich sind, fallen Überprüfungen auf reguläre Ausdrücke leider heraus, die insbesondere Skriptsprachen anbieten.

Labels: ,

2 Antwort(en) auf ›switch auf Strings seit Java 7‹

  1. # Anonymous Anonym

    Im Kleinen vielleicht noch sinnvoll.
    Hier ist die Frage, ob das zu besserem Code führt...

    Ansonsten wäre das StrategyPattern doch anwendbar:
    Map<String, MyStrategy> strats;
    strats.put("kekse", new ImLovingCookiesStratey());
    strats.put("kuchen", new CakePleaseStrategy());
    ...
    strats.put("default", new WillYouReallyEatThisStrategy());

    MyStrategy currStrat = strats.get(input.toLowerCase());
    if (currStrat==null)
    currStrat = strats.get("default");
    currStrat.execute(input, ...);  

  2. # Anonymous Anonym

    Natürlich könnte das ganze noch in einen Kontext eingebettet werden, um das Strategiemuster vollständig zu machen (hier nicht gemacht).  

Kommentar veröffentlichen