Recherche…


Introduction

Dans cette rubrique, vous trouverez un récapitulatif des nouvelles fonctionnalités ajoutées au langage de programmation Java dans Java SE 7. Il existe de nombreuses autres nouvelles fonctionnalités dans d’autres domaines tels que JDBC et Java Virtual Machine (JVM) qui ne seront pas couvertes. dans ce sujet.

Remarques

Améliorations de Java SE 7

Nouvelles fonctionnalités du langage de programmation Java SE 7

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;
}


Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow