Java Language
Fonctionnalités Java SE 7
Recherche…
Introduction
Remarques
Nouvelles fonctionnalités du langage de programmation Java SE 7
- Littéraux binaires : Les types intégraux (octet, court, entier et long) peuvent également être exprimés à l'aide du système de nombres binaires. Pour spécifier un littéral binaire, ajoutez le préfixe 0b ou 0B au numéro.
- Strings in switch Instructions : Vous pouvez utiliser un objet String dans l'expression d'une instruction switch
- L'instruction try-with-resources : l' instruction try-with-resources est une instruction try qui déclare une ou plusieurs ressources. Une ressource est un objet qui doit être fermé une fois le programme terminé. L'instruction try-with-resources garantit que chaque ressource est fermée à la fin de l'instruction. Tout objet qui implémente java.lang.AutoCloseable, qui inclut tous les objets qui implémentent java.io.Closeable, peut être utilisé en tant que ressource.
- Attraper plusieurs types d'exceptions et rediriger des exceptions avec une vérification de type améliorée : un seul bloc catch peut gérer plusieurs types d'exception. Cette fonctionnalité peut réduire la duplication de code et réduire la tentation d’attraper une exception trop large.
- Underscores dans les littéraux numériques : n'importe quel nombre de caractères de soulignement (_) peut apparaître n'importe où entre des chiffres dans un littéral numérique. Cette fonctionnalité vous permet, par exemple, de séparer des groupes de chiffres dans des littéraux numériques, ce qui peut améliorer la lisibilité de votre code.
- Inférence de type pour la création d'instance générique : Vous pouvez remplacer les arguments de type requis pour appeler le constructeur d'une classe générique par un ensemble vide de paramètres de type (<>) tant que le compilateur peut déduire les arguments de type du contexte. Cette paire de crochets est appelée de manière informelle le diamant.
- Amélioration des avertissements et erreurs du compilateur lors de l'utilisation de paramètres formels non-réiférents avec les méthodes Varargs
Littéraux binaires
// An 8-bit 'byte' value:
byte aByte = (byte)0b00100001;
// A 16-bit 'short' value:
short aShort = (short)0b1010000101000101;
// Some 32-bit 'int' values:
int anInt1 = 0b10100001010001011010000101000101;
int anInt2 = 0b101;
int anInt3 = 0B101; // The B can be upper or lower case.
// A 64-bit 'long' value. Note the "L" suffix:
long aLong = 0b1010000101000101101000010100010110100001010001011010000101000101L;
La déclaration d'essayer avec les ressources
L'exemple lit la première ligne d'un fichier. Il utilise une instance de BufferedReader
pour lire les données du fichier. BufferedReader
est une ressource qui doit être fermée après la fin du programme:
static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
Dans cet exemple, la ressource déclarée dans l'instruction try-with-resources est un BufferedReader
. L'instruction de déclaration apparaît entre parenthèses immédiatement après le mot clé try. La classe BufferedReader
, dans Java SE 7 et java.lang.AutoCloseable
ultérieures, implémente l'interface java.lang.AutoCloseable
. Étant donné que l'instance BufferedReader
est déclarée dans une instruction try-with-resource, elle sera fermée, que l'instruction try se termine normalement ou brusquement (à la suite de la méthode BufferedReader.readLine
IOException
une IOException
).
Underscores dans les littéraux numériques
L'exemple suivant montre d'autres manières d'utiliser le trait de soulignement dans les littéraux numériques:
long creditCardNumber = 1234_5678_9012_3456L;
long socialSecurityNumber = 999_99_9999L;
float pi = 3.14_15F;
long hexBytes = 0xFF_EC_DE_5E;
long hexWords = 0xCAFE_BABE;
long maxLong = 0x7fff_ffff_ffff_ffffL;
byte nybbles = 0b0010_0101;
long bytes = 0b11010010_01101001_10010100_10010010;
Vous pouvez placer des traits de soulignement uniquement entre les chiffres; vous ne pouvez pas placer des traits de soulignement dans les endroits suivants:
- Au début ou à la fin d'un nombre
- Adjacent à un point décimal dans un littéral à virgule flottante
- Avant un suffixe F ou L
- Dans les positions où une chaîne de chiffres est attendue
Type Inference pour la création d'instance générique
Vous pouvez utiliser
Map<String, List<String>> myMap = new HashMap<>();
au lieu de
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
Cependant, vous ne pouvez pas utiliser
List<String> list = new ArrayList<>();
list.add("A");
// The following statement should fail since addAll expects
// Collection<? extends String>
list.addAll(new ArrayList<>());
parce qu'il ne peut pas compiler. Notez que le diamant fonctionne souvent dans les appels de méthode; Cependant, il est conseillé d'utiliser le diamant principalement pour les déclarations de variables.
Strings in switch Déclarations
public String getTypeOfDayWithSwitchStatement(String dayOfWeekArg) {
String typeOfDay;
switch (dayOfWeekArg) {
case "Monday":
typeOfDay = "Start of work week";
break;
case "Tuesday":
case "Wednesday":
case "Thursday":
typeOfDay = "Midweek";
break;
case "Friday":
typeOfDay = "End of work week";
break;
case "Saturday":
case "Sunday":
typeOfDay = "Weekend";
break;
default:
throw new IllegalArgumentException("Invalid day of the week: " + dayOfWeekArg);
}
return typeOfDay;
}