Java Language
Funzionalità Java SE 7
Ricerca…
introduzione
Osservazioni
Nuove funzionalità del linguaggio di programmazione Java SE 7
- Binary Literals : i tipi interi (byte, short, int e long) possono anche essere espressi usando il sistema di numeri binari. Per specificare un valore letterale binario, aggiungi il prefisso 0b o 0B al numero.
- Stringhe nelle dichiarazioni switch : è possibile utilizzare un oggetto String nell'espressione di un'istruzione switch
- L'istruzione try-with-resources : L' istruzione try-with-resources è un'istruzione try che dichiara una o più risorse. Una risorsa è come un oggetto che deve essere chiuso al termine del programma. L'istruzione try-with-resources assicura che ogni risorsa sia chiusa alla fine dell'istruzione. Qualsiasi oggetto che implementa java.lang.AutoCloseable, che include tutti gli oggetti che implementano java.io.Closeable, può essere utilizzato come risorsa.
- Acquisire più tipi di eccezioni e rimandare le eccezioni con il controllo dei tipi migliorato : un singolo blocco catch può gestire più di un tipo di eccezione. Questa funzione può ridurre la duplicazione del codice e ridurre la tentazione di rilevare un'eccezione troppo ampia.
- Underscores in Numeric Literals : qualsiasi numero di caratteri di sottolineatura (_) può apparire ovunque tra cifre in un valore letterale numerico. Questa funzione consente, ad esempio, di separare gruppi di cifre in valori letterali numerici, che possono migliorare la leggibilità del codice.
- Digitare Inference per la creazione di istanze generiche : è possibile sostituire gli argomenti di tipo richiesti per richiamare il costruttore di una classe generica con un set vuoto di parametri di tipo (<>) a condizione che il compilatore possa dedurre gli argomenti di tipo dal contesto. Questa coppia di parentesi angolari è chiamata in modo informale il diamante.
- Errori ed errori del compilatore migliorati quando si utilizzano parametri formali non-reifiable con metodi Varargs
Binary Literals
// 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 dichiarazione try-with-resources
L'esempio legge la prima riga da un file. Usa un'istanza di BufferedReader
per leggere i dati dal file. BufferedReader
è una risorsa che deve essere chiusa al termine del programma:
static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
In questo esempio, la risorsa dichiarata nell'istruzione try-with-resources è una BufferedReader
. L'istruzione dichiarazione appare tra parentesi immediatamente dopo la parola chiave try. La classe BufferedReader
, in Java SE 7 e successive, implementa l'interfaccia java.lang.AutoCloseable
. Poiché l'istanza BufferedReader
viene dichiarata in un'istruzione try-with-resource, verrà chiusa indipendentemente dal fatto che l'istruzione try venga completata normalmente o in modo brusco (come risultato del metodo BufferedReader.readLine
che IOException
una IOException
).
Sottolinea in Numeric Literals
L'esempio seguente mostra altri modi per utilizzare il carattere di sottolineatura in valori letterali numerici:
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;
È possibile inserire caratteri di sottolineatura solo tra cifre; non puoi inserire caratteri di sottolineatura nei seguenti luoghi:
- All'inizio o alla fine di un numero
- Adiacente a un punto decimale in un letterale in virgola mobile
- Prima di un suffisso F o L
- Nelle posizioni in cui è prevista una stringa di cifre
Digitare un'inferenza per la creazione di istanze generiche
Puoi usare
Map<String, List<String>> myMap = new HashMap<>();
invece di
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
Tuttavia, non è possibile utilizzare
List<String> list = new ArrayList<>();
list.add("A");
// The following statement should fail since addAll expects
// Collection<? extends String>
list.addAll(new ArrayList<>());
perché non può essere compilato. Si noti che il diamante spesso funziona nelle chiamate al metodo; tuttavia, si suggerisce di utilizzare il diamante principalmente per dichiarazioni variabili.
Stringhe nelle dichiarazioni switch
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;
}