Zoeken…


Invoering

In dit onderwerp vindt u een samenvatting van de nieuwe functies die zijn toegevoegd aan de Java-programmeertaal in Java SE 7. Er zijn veel andere nieuwe functies in andere velden zoals JDBC en Java Virtual Machine (JVM) die niet worden behandeld in dit onderwerp.

Opmerkingen

Verbeteringen in Java SE 7

Nieuwe programmeertaal Java SE 7

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


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow