Java 10 – co nowego?

W niniejszym wpisie przyjrzymy się wybranym nowościom w Java wersji 10. Pełną listę zmian można znaleźć tutaj.

var – wnioskowanie typu

No to doczekaliśmy się w Javie JavaScriptu 😉 Oczywiście, jest to żart. Słowo kluczowe var w języku Java nie powoduje, że zmienna staje się globalna, ale raczej to, że można do niej przypisać obiekt dowolnego typu. Następuje tutaj wnioskowanie typu, dzięki czemu możliwe jest użycie metod „wywnioskowanej” klasy:

var name = "Damian";
name.toUpperCase();
->DAMIAN

Statyczna metoda copyOf w Map i Set

Klasy Map i Set dostały nowe metody statyczne – copyOf. Dzięki czemu możliwe jest łatwe kopiowanie map i zbiorów. Lecz należy pamiętać, że zwracane kolekcje są niemodyfikowalne:

Map<Integer, String> alphabetMap = Map.copyOf(new HashMap<>(Map.of(1, "a", 2, "b")));
alphabetMap.put(3, "c"); //to nie zadziala - copyOf zwraca niemodyfikowalna mape
Set<String> alphabetSet = Set.copyOf(new HashSet<>(Set.of("a", "b")));
alphabetSet.add("c"); //to nie zadziala - copyOf zwraca niemodyfikowalny zbior

Collectors.toUnmodifableList()

Stream API dostało nową metodę klasy Collectors pozwalającą na zwrócenie niemodyfikowalnej listy:

List<String> unmodifableList = Stream.of("a", "b").collect(Collectors.toUnmodifiableList());
unmodifableList.add("c"); //to nie zadziala - toUnmodifiableList zwraca niemodyfikowalna liste

Optional orElseThrow

Klasa Optional dostała nową bez-argumentową wersję metody orElseThrow. Rzuca ona wyjątek NoSuchElementException:

Optional.ofNullable(null)
    .orElseThrow();

Wersje Javy z datą

Od Javy 10 wersje są oznaczane dodatkowo datą:

java --version

openjdk version "10" 2018-03-20
OpenJDK Runtime Environment 18.3 (build 10+44)
OpenJDK 64-Bit Server VM 18.3 (build 10+44, mixed mode)

Warto zajrzeć

1. Pełna lista zmian wprowadzonych w Javie 10
2. Projekt z przykładami z wpisu

Pozostaw komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *