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();
->DAMIANStatyczna 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 zbiorCollectors.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 listeOptional 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
