Comme annoncé par Oracle à Oracle Code One 2019, Java 13 a été publié.
[Dernières nouvelles] Java 13 est là. Nouvelles fonctionnalités telles que le ZGC amélioré et la réalisation de type Switch. Oracle Code One 2019-Publickey JDK 13 Documentation - Home
Le JDK est également distribué à OpneJDK (bien entendu).
Ici, pour le moment, le contenu est extrait en se concentrant sur les spécifications du langage de Java SE 13 (JSR 388).
Il y a peu de changements dans JDK13 cette fois.
JEP 354: Switch Expressions (Preview)
Extend switch so it can be used as either a statement or an expression, and so that both forms can use either traditional case ... : labels (with fall through) or new case ... -> labels (with no fall through), with a further new statement for yielding a value from a switch expression. These changes will simplify everyday coding, and prepare the way for the use of pattern matching (JEP 305) in switch. This is a preview language feature in JDK 13.
En termes simples, le commutateur peut être étendu en instructions et utilisé comme expressions et instructions. Même dans Java 12, elle était considérée comme une fonction de prévisualisation dans JEP 325: Switch Expressions (Preview), mais elle a été réexaminée et est maintenant une fonction de prévisualisation. ..
En regardant le contenu réexaminé JEP 354: Switch Expressions (Preview), il est décrit comme suit.
To yield a value from a switch expression, the break with value statement is dropped in favor of a yield statement.
Il s'agit de générer une valeur en déclarant la valeur de retour lors de la description dans le bloc {} comme une nouvelle instruction yield lors du retour de la valeur en branchant l'instruction switch.
Voici un exemple d'implémentation
import java.time.LocalDate;
import java.time.DayOfWeek;
public class Tester_01 {
public static void main(String... args) {
LocalDate today = LocalDate.now();
System.out.println(java13(today.getDayOfWeek()));
}
private static int java13(DayOfWeek today) {
int numLetters = switch (today) {
case MONDAY, FRIDAY, SUNDAY -> 6;
case TUESDAY -> 7;
default -> {
int k = today.toString().length();
yield k;
}
};
return numLetters;
}
}
Puisqu'il s'agit d'une version Preview, l'option --enable-preview est requise au moment de l'exécution comme indiqué ci-dessous.
workspace> javac --enable-preview --release 13 .\Tester_01.java
Mise en garde:.\Tester_01.java utilise la fonctionnalité de langue de prévisualisation.
Mise en garde:Le détail est,-Xlint:Veuillez recompiler avec l'option d'aperçu.
PS C:workspace> java --enable-preview Tester_01
JEP 355: Text Blocks (Preview)
Add text blocks to the Java language. A text block is a multi-line string literal that avoids the need for most escape sequences, automatically formats the string in a predictable way, and gives the developer control over format when desired. This is a preview language feature in JDK 13.
Auparavant, lors de l'écriture d'une chaîne de caractères sur plusieurs lignes, la chaîne de caractères entourée de "
(littéraux de chaîne" unidimensionnels ") était décrite en utilisant l'opérateur +, mais En l'enfermant dans "" `(bloc de texte" bidimensionnel "), il n'est plus nécessaire de décrire l'opérateur +.
Notation traditionnelle
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
Object obj = engine.eval("function hello() {\n" +
" print('\"Hello, world\"');\n" +
"}\n" +
"\n" +
"hello();\n");
Notation par JEP355
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
Object obj = engine.eval("""
function hello() {
print('"Hello, world"');
}
hello();
""");
Cela semble utile lors de la mise en œuvre de SQL à l'aide d'annotations.
Nous étudierons l'API séparément. Si vous avez des questions ou si quelque chose ne va pas, veuillez faire une demande de modification.
Recommended Posts