Java Language
Java SE 7-functies
Zoeken…
Invoering
Opmerkingen
Nieuwe programmeertaal Java SE 7
- Binaire literalen : de integrale typen (byte, kort, int en lang) kunnen ook worden uitgedrukt met behulp van het binaire getallenstelsel. Om een binaire letterlijke waarde op te geven, voegt u het voorvoegsel 0b of 0B toe aan het nummer.
- Strings in switch Statements : u kunt een String-object gebruiken in de uitdrukking van een switch-instructie
- De try-with-resources-instructie : de try-with-resources-instructie is een try-instructie die een of meer bronnen declareert. Een resource is een object dat moet worden afgesloten nadat het programma hiermee is voltooid. De instructie try-with-resources zorgt ervoor dat elke resource aan het einde van de instructie wordt gesloten. Elk object dat java.lang.AutoCloseable implementeert, inclusief alle objecten die java.io.Closeable implementeren, kan als een resource worden gebruikt.
- Meerdere uitzonderingstypen vangen en uitzonderingen opnieuw toepassen met verbeterde typecontrole : een enkel vangblok kan meer dan één type uitzondering verwerken. Deze functie kan codeduplicatie verminderen en de verleiding verminderen om een al te brede uitzondering op te vangen.
- Onderstrepingstekens in numerieke letterlijke waarden: elk aantal onderstrepingstekens (_) kan overal tussen cijfers in een numerieke letterlijke waarde verschijnen. Met deze functie kunt u bijvoorbeeld groepen cijfers in numerieke lettertypen scheiden, wat de leesbaarheid van uw code kan verbeteren.
- Type-inferentie voor het maken van generieke exemplaren : u kunt de typeargumenten die nodig zijn om de constructor van een generieke klasse aan te roepen vervangen door een lege set typeparameters (<>) zolang de compiler de typeargumenten uit de context kan afleiden. Dit paar hoekbeugels wordt informeel de diamant genoemd.
- Verbeterde Compiler-waarschuwingen en fouten bij het gebruik van niet-herifieerbare formele parameters met Varargs-methoden
Binaire 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;
De instructie try-with-resources
Het voorbeeld leest de eerste regel uit een bestand. Het gebruikt een exemplaar van BufferedReader
om gegevens uit het bestand te lezen. BufferedReader
is een bron die moet worden afgesloten nadat het programma hiermee is voltooid:
static String readFirstLineFromFile(String path) throws IOException {
try (BufferedReader br = new BufferedReader(new FileReader(path))) {
return br.readLine();
}
}
In dit voorbeeld is de bron die in de instructie try-with-resources is gedeclareerd een BufferedReader
. De verklaring wordt tussen haakjes weergegeven direct na het sleutelwoord try. De klasse BufferedReader
, in Java SE 7 en hoger, implementeert de interface java.lang.AutoCloseable
. Omdat de BufferedReader
instantie wordt gedeclareerd in een try-with-resource-instructie, wordt deze gesloten ongeacht of de try-instructie normaal of abrupt wordt voltooid (als gevolg van de methode BufferedReader.readLine
die een IOException
).
Onderstrepingstekens in numerieke literals
Het volgende voorbeeld laat andere manieren zien waarop u het onderstrepingsteken kunt gebruiken in numerieke literals:
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;
U kunt alleen onderstrepingstekens tussen cijfers plaatsen; u kunt geen onderstrepingstekens op de volgende plaatsen plaatsen:
- Aan het begin of einde van een nummer
- Grenzend aan een decimaal punt in een letterlijk drijvend punt
- Voorafgaand aan een F- of L-achtervoegsel
- Op posities waar een reeks cijfers wordt verwacht
Type Inferentie voor het maken van algemene exemplaren
Je kunt gebruiken
Map<String, List<String>> myMap = new HashMap<>();
in plaats van
Map<String, List<String>> myMap = new HashMap<String, List<String>>();
U kunt echter niet gebruiken
List<String> list = new ArrayList<>();
list.add("A");
// The following statement should fail since addAll expects
// Collection<? extends String>
list.addAll(new ArrayList<>());
omdat het niet kan compileren. Merk op dat de diamant vaak werkt in methodeaanroepen; er wordt echter gesuggereerd dat u de diamant voornamelijk gebruikt voor variabele aangiften.
Tekenreeksen in schakelaar Statements
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;
}