Avec JDK/12 EarlyAccess Build 1 , les expressions de commutateur JEP-325 ont été intégrées en tant que fonction de prévisualisation dans le JDK. Un exemple de code pour les expressions (comme dans le PEC):
Scanner scanner = new Scanner(System.in);
Day day = Day.valueOf(scanner.next());
switch (day) {
case MONDAY, TUESDAY -> System.out.println("Back to work.") ;
case WEDNESDAY -> System.out.println("Wait for the end of week...") ;
case THURSDAY,FRIDAY -> System.out.println("Plan for the weekend?");
case SATURDAY, SUNDAY -> System.out.println("Enjoy the holiday!");
}
où Day
étant une énumération comme
public enum Day {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
Le Preview Language et VM Features JEP-12 explique déjà comment une fonctionnalité peut être activée pendant la compilation et l'exécution à l'aide de javac
et Java
.
Comment peut-on essayer cette fonctionnalité avec Maven?
Step 1: On peut utiliser les configurations maven suivantes pour compiler le code en utilisant le --enable-preview
de même que --release 12
argument.
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<release>12</release>
<compilerArgs>--enable-preview</compilerArgs>
</configuration>
</plugin>
<!-- This is just to make sure the class is set as main class to execute from the jar-->
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-shade-plugin</artifactId>
<version>3.1.0</version>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>shade</goal>
</goals>
<configuration>
<transformers>
<transformer
implementation="org.Apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
<transformer
implementation="org.Apache.maven.plugins.shade.resource.ManifestResourceTransformer">
<mainClass>com.stackoverflow.nullpointer.expression.SwitchExpressions</mainClass>
</transformer>
</transformers>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
Remarque: - Je devais également m'assurer sur mon MacOS que mon ~/.mavenrc
Le fichier a été configuré pour marquer Java 12 par défaut Java configuré pour maven.).
Étape 2: Exécutez la commande maven pour construire le fichier jar à partir des classes de module
mvn clean verify
Step 3: Utilisez la ligne de commande pour exécuter la classe principale du fichier jar créé à l'étape précédente en tant que:
Java --enable-preview -jar target/jdk12-updates-1.0.0-SNAPSHOT.jar #the last argument being the path to my jar
Cela produit la sortie comme prévu: