Java 10 - var, nowe metody w Optional, kolekcje "unmodifiable"
Nowości w języku
Java 10 wniosła do języka trochę słodkiego smaku. Zmian z pewnością nie należy określać pogardliwym stwierdzeniem “to tylko syntactic sugar!”, ale nie mam wątpliwości, że dotatki są wyjątkowo smaczne - spójrzcie:
Wnioskowanie typów dla zmiennych lokalnych
Od wersji Java 10 możliwe jest deklarowanie zmiennych lokalnych inicjalizowanych w miejscu definicji bez podawania ich typu. Zmienną taką należy zadeklarować poprzedzając ją - zamiast nazwą typu - słówkiem var
(ze względu na kompatybilność wsteczną var
nie jest słowem kluczowym, lecz zarezerwowaną nazwą typu). Nareszcie!
|
|
Dobra praktyka: używać tam, gdzie nie ma wątpliwości co do typu. Nie należy nakładać na przyszłych maintainerów kodu konieczności sprawdzania np. typu wartości zwracanej przez funkcję; byłoby to dość niegrzecznym nadużyciem:
|
|
Inne konteksty użycia var
to:
- zmienna indeksująca w standardowej pętli
|
|
- zmienna pętli w pętli rozszerzonej
|
|
- zmienne używane w konstrukcji try-with-resources
|
|
Nowa metody w klasie Optional
Optional otrzymał nowy wariant metody rzucającej wyjątek w przypadku braku wartości; obok orElseThrow(Supplier<Throwable>)
została dodana metoda orElseThrow()
, która rzuca NoSuchElementException
.
Kopiowanie kolekcji
Interfejsy List
i Set
uzyskały nową metodę copyOf
pozwalającą na utworzenie niemodyfikowalnej kolekcji z elementów bieżącej (this
) kolekcji.
W przeciwieństwie do kolekcji uzyskanych przez owinięcie kolekcji źródłowej wywołaniem: Collections.unmodifiableList(source)
(i podobnymi), które stanowią jedynie widok na kolekcję źródłową i ich zawartość odzwierciedla zmiany w “źródle”, kolekcje skopiowane przy użyciu copyOf()
są “oderwane” od kolekcji źródłowej i nie “widzą” zmian w niej dokonanych.
Wykonana kopia jest płytka, więc zmiana elementów znajdujących się w kolekcji jest w dalszym ciągu możliwa. O niemodyfikowalnych kolekcjach i widokach można przeczytać w API dla interfejsu Collection.
Java - inne wpisy
Może Cię również zainteresować:
- Co się zmieniło w Javie po wersji 7
- Java 8 - Mały przykład: przewidywanie kolejnej daty w serii dat i wyznaczenie średniej odległości między datami.
- Java 9 - Praktyczy przykład: trzy moduły
- Java 9 - Czy mogę stworzyć z mojej aplikacji binarkę?
- Java 9 - nowości w bibliotece
- Java 9 - co to jest JShell i dlaczego warto używać REPL-a
- Java 11 - HttpClient i uruchamianie jednoplikowych programów
Ten wpis jest częścią serii java.
- 2021-09-12 - Java 18: co nowego? - przegląd JEP-ów
- 2021-21-09 - Java 17 - RandomGenerator i spółka
- 2021-15-09 - Java 17 - co nowego?
- 2021-04-03 - Java 15 - czym są sealed classes?
- 2021-26-02 - Java 13 i 14: Bloki tekstowe i rekordy
- 2021-24-02 - Java 12 - wyrażenie switch (preview feature)
- 2021-23-02 - Java 11 - HTTP Client i uruchamianie jednoplikowych programów
- 2021-18-02 - Java 9 - co to jest JShell i dlaczego warto używać REPL-a w Javie
- 2021-12-02 - Java 10 - var, nowe metody w Optional, kolekcje "unmodifiable"
- 2021-11-02 - Java 9 - nowości w bibliotece
- 2021-10-02 - Java 9: czy mogę stworzyć z mojej aplikacji binarkę?
- 2021-10-02 - Java 9: praktyczny przykład - trzy moduły
- 2021-08-02 - Java 8: praktyczny przykład - przewidywanie kolejnej daty w serii