Il y a 4 ans -
Temps de lecture 1 minute
Pépite #9 – Le nouveau switch de Java 12
L’instruction switch de Java, qui a été conçue à partir des langages C et C++, n’a pas grandement évolué avec le temps.
Java souhaitant s’enrichir du filtrage par motif dans une version future, il est devenu nécessaire de modifier notre bon vieux switch, presque irritant pour les développeurs.
Ainsi, Java 12, qui est sorti le 19 mars, embarque des nouveautés à titre expérimental :
switch (day) { case MONDAY, FRIDAY, SUNDAY -> System.out.println(6); case TUESDAY -> System.out.println(7); case THURSDAY, SATURDAY -> System.out.println(8); case WEDNESDAY -> System.out.println(9); }
Grâce à cette syntaxe, seul le code à droite du « case L -> » sera exécuté. Plus besoin de break !
De plus, beaucoup d’instructions switch sont utilisées comme expressions, comme cet exemple en Java 11 ou inférieur :
Expression switch en Java 11
int numLetters; switch (day) { case MONDAY: case FRIDAY: case SUNDAY: numLetters = 6; break; case TUESDAY: numLetters = 7; break; case THURSDAY: case SATURDAY: numLetters = 8; break; case WEDNESDAY: numLetters = 9; break; default: throw new IllegalStateException("Wat: " + day); }
Le JDK 12 propose donc cette syntaxe, qui fait du switch une expression à part entière :
Expression switch en Java 12
int numLetters = switch (day) { case MONDAY, FRIDAY, SUNDAY -> 6; case TUESDAY -> 7; case THURSDAY, SATURDAY -> 8; case WEDNESDAY -> 9; default -> throw new IllegalStateException("Wat: " + day); };
Même si généralement on rencontre une seule expression pour chaque case, il est aussi possible de déclarer un bloc de code finissant par break (qui fonctionnera comme un return) :
int j = switch (day) { case MONDAY -> 0; case TUESDAY -> 1; default -> { int k = day.toString().length(); int result = f(k); break result; } };
Et si vous préférez l’ancienne syntaxe, vous pourrez toujours utiliser l’expression switch de cette manière :
int result = switch (s) { case "Foo": break 1; case "Bar": break 2; default: System.out.println("Neither Foo nor Bar, hmmm..."); break 0; };
Notez toutefois qu’il est impossible de combiner le case avec des flèches et l’ancienne syntaxe au sein d’un même bloc switch.
Comme écrit plus haut, ce nouveau switch n’est malheureusement disponible que de manière expérimentale, afin d’avoir des retours des développeurs basés sur une utilisation réelle.
Pour en profiter, vous devrez compiler avec l’option –enable-preview.
Commentaire
1 réponses pour " Pépite #9 – Le nouveau switch de Java 12 "
Published by Jean pierre , Il y a 4 ans
Sympa l’article
♥ Benjamin Dupin ♥