Szukaj…


Wprowadzenie

W tym temacie znajdziesz podsumowanie nowych funkcji dodanych do języka programowania Java w Javie SE 7. Istnieje wiele innych nowych funkcji w innych dziedzinach, takich jak JDBC i Java Virtual Machine (JVM), które nie będą omówione w tym temacie.

Uwagi

Udoskonalenia w Javie SE 7

Nowe funkcje języka programowania Java SE 7

Literały binarne

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

Instrukcja try-with-resources

Przykład czyta pierwszą linię z pliku. Wykorzystuje instancję BufferedReader do odczytu danych z pliku. BufferedReader to zasób, który należy zamknąć po zakończeniu programu:

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

W tym przykładzie zasób zadeklarowany w instrukcji try-with-resources jest BufferedReader . Deklaracja pojawia się w nawiasach bezpośrednio po słowie kluczowym try. Klasa BufferedReader w Javie SE 7 i nowszych implementuje interfejs java.lang.AutoCloseable . Ponieważ instancja BufferedReader jest zadeklarowana w instrukcji try-with-resource, zostanie zamknięta niezależnie od tego, czy instrukcja try zakończy się normalnie czy nagle (w wyniku wywołania IOException przez metodę BufferedReader.readLine ).

Podkreślenia w literałach numerycznych

Poniższy przykład pokazuje inne sposoby użycia podkreślenia w literałach numerycznych:

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;

Podkreślenia można umieszczać tylko między cyframi; nie możesz umieszczać podkreślenia w następujących miejscach:

  • Na początku lub na końcu liczby
  • Przylegający do kropki dziesiętnej w literale zmiennoprzecinkowym
  • Przed sufiksem F lub L.
  • W pozycjach, w których oczekiwany jest ciąg cyfr

Typ wnioskowania dla tworzenia instancji ogólnych

Możesz użyć

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

zamiast

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

Nie możesz jednak użyć

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

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

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

ponieważ nie można go skompilować. Zauważ, że diament często działa w wywołaniach metod; jednak sugeruje się, aby używać diamentu głównie do deklaracji zmiennych.

Ciągi w instrukcjach przełączników

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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow