Buscar..


Introducción

En este tema, encontrará un resumen de las nuevas características agregadas al lenguaje de programación Java en Java SE 7. Hay muchas otras características nuevas en otros campos como JDBC y Java Virtual Machine (JVM) que no se cubrirán. en este tema.

Observaciones

Mejoras en Java SE 7

Nuevas características del lenguaje de programación Java SE 7.

Literales binarios

// 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 declaración de prueba con recursos

El ejemplo lee la primera línea de un archivo. Utiliza una instancia de BufferedReader para leer datos del archivo. BufferedReader es un recurso que debe cerrarse una vez que el programa haya terminado con él:

static String readFirstLineFromFile(String path) throws IOException {
  try (BufferedReader br = new BufferedReader(new FileReader(path))) {
    return br.readLine();
  }
}

En este ejemplo, el recurso declarado en la declaración try-with-resources es un BufferedReader . La declaración de declaración aparece entre paréntesis inmediatamente después de la palabra clave try. La clase BufferedReader , en Java SE 7 y versiones posteriores, implementa la interfaz java.lang.AutoCloseable . Debido a que la instancia de BufferedReader se declara en una sentencia try-with-resource, se cerrará sin importar si la sentencia de prueba se completa normalmente o de manera abrupta (como resultado del método BufferedReader.readLine una IOException ).

Subrayados en literales numéricos

El siguiente ejemplo muestra otras formas en que puede usar el guión bajo en literales numéricos:

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;

Puede colocar guiones bajos solo entre dígitos; No puedes colocar guiones bajos en los siguientes lugares:

  • Al principio o al final de un número
  • Adyacente a un punto decimal en un literal de punto flotante
  • Antes de un sufijo F o L
  • En posiciones donde se espera una cadena de dígitos

Inferencia de tipos para la creación de instancias genéricas

Puedes usar

Map<String, List<String>> myMap = new HashMap<>();

en lugar de

Map<String, List<String>> myMap = new HashMap<String, List<String>>();

Sin embargo, no puedes usar

List<String> list = new ArrayList<>();
list.add("A");

  // The following statement should fail since addAll expects
  // Collection<? extends String>

list.addAll(new ArrayList<>());

porque no se puede compilar. Tenga en cuenta que el diamante a menudo funciona en las llamadas de método; sin embargo, se sugiere que use el diamante principalmente para declaraciones de variables.

Cadenas en las instrucciones del interruptor

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
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow