Sök…


Introduktion

I det här ämnet hittar du en sammanfattning av de nya funktionerna som har lagts till Java-programmeringsspråket i Java SE 7. Det finns många andra nya funktioner i andra fält som JDBC och Java Virtual Machine (JVM) som inte kommer att täckas i det här ämnet.

Anmärkningar

Förbättringar i Java SE 7

Nya Java SE 7-programmeringsspråk

Binära bokstäver

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

Try-with-resources-uttalandet

Exemplet läser den första raden från en fil. Den använder en instans av BufferedReader att läsa data från filen. BufferedReader är en resurs som måste stängas efter att programmet är klart med det:

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

I det här exemplet är resursen som deklareras i try-with-resources-uttalandet en BufferedReader . Deklarationsförklaringen visas inom parentes omedelbart efter försök nyckelordet. Klassen BufferedReader , i Java SE 7 och senare, implementerar gränssnittet java.lang.AutoCloseable . Eftersom BufferedReader instansen deklareras i ett try-with-resource-uttalande, kommer det att stängas oavsett om try-uttalandet slutförs normalt eller plötsligt (som ett resultat av metoden BufferedReader.readLine kastar en IOException ).

Underscores i numeriska litteraler

Följande exempel visar andra sätt du kan använda understrecket i numeriska bokstäver:

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;

Du kan endast placera understreck mellan siffror; Du kan inte placera understreck på följande platser:

  • I början eller slutet av ett nummer
  • Intill en decimal i en flytande punkt bokstavlig
  • Innan ett F- eller L-suffix
  • I positioner där en rad siffror förväntas

Skriv inferens för skapande av generiska instanser

Du kan använda

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

istället för

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

Du kan dock inte använda

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

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

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

för det kan inte sammanställas. Observera att diamanten ofta fungerar i metodsamtal; dock föreslås att du använder diamanten främst för variabla deklarationer.

Strängar i switch Uttalanden

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow