Java 8 Flashcards
1
Q
Głowne feature Javy 8
A
- Wyrażenia Lambda (Lambda Expressions)
- Referencje do Metod (Method References)
- Interfejsy Funkcyjne (Functional Interfaces)
- Stream API
- Optional
- Nowe API Daty i Czasu
- Default Methods (Metody Domyślne)
- JVM Improvements
2
Q
Referancje do metody
A
- bezpośrednio odniesienie się do metody istniejącej klasy lub obiektu
- wskazuje metodę do wywołania bez jej natychmistowego wywołania
- umożliwiają traktowanie metod jak wyrażeń lambda.
- bardziej zwięzłe przekazywanie metod jako argumentów, niż byłoby to możliwe przy użyciu wyrażeń lambda.
3
Q
Przykład użycia referencji do metody jako arugmentu w porównaniu do lambdy
A
4
Q
Optional
A
- klasa kontenerowa, która służy jak alternatywa dla referncji, które mogą być null
- zapobiega NullPointerException
- zapewnia szereg metod, które pozwalają obsłużyc brak lub wystąpienie wartości
5
Q
Tworzenie Optional
A
Optional<String> optionalEmpty = Optional.empty(); // Puste Optional Optional<String> optionalOf = Optional.of("jakasWartosc"); // Optional z wartością (nie może być null!) Optional<String> optionalNullable = Optional.ofNullable(mozeBycNull); // Optional, który może zawierać null
6
Q
- Działanie w przypadku obecności wartości Optional
A
optionalOf.ifPresent(wartosc -> System.out.println("Wartość to: " + wartosc));
7
Q
Zwrócenie wartości lub domyślnej
A
String wartoscLubDomyslna = optionalNullable.orElse("domyslnaWartosc");
8
Q
- Łańcuchowe wywołania metod za pomocą flatMap i map
A
Optional<String> optionalWartosc = Optional.of("jakisTekst"); int dlugosc = optionalWartosc .map(String::length) // przekształca Optional<String> na Optional<Integer> .orElse(0); // jeśli Optional<Integer> jest puste, zwróć 0
9
Q
- Wykorzystanie w połączeniu z wyjątkami
A
public Klasa jakasMetoda(String parametr) { return znajdzCos(parametr) .orElseThrow(() -> new MojWyjatek("Nie znaleziono elementu dla parametru " + parametr)); }
10
Q
Interfejs funkcyjny
A
- interfejs z jedną metodą abstrakcyjną
- gdy msz interfejs funkcyjny, możesz użyć wyrażenia lambda lub referencji do metody aby dostarczyć instancje tego interfejsu
11
Q
Interfejs funkcyjny vs Klasa anonimowa vs Referencja do metody
A
12
Q
Po co więc używać klasy anonimowej
A
- gdy chcesz zaimplementować interfejs, który ma więcej niż jedną metodę abstrakcyjną i wszystkie te metody muszą być zaimplemenntwoane
- mogą dziedzczyć
- mogą deklarować pola
13
Q
Lambda
A
- sposób na przekazanie fragmentu kodu jako argumentu do metody
- używane do tworzenia interfejsów funkcyjnych
- krótsze i bardziej zwięzłe niż klasy anonimowe
14
Q
Operacje w pętlach vs streamy
A
- streamy oferują deklaratywne podejście do przetwarzania danych - określasz co chcesz osiągnąć
- pętle są imperatywne musisz określić dokładne kroki jak dojść do wyniku
- operacje na stream są niezmienne oryginalna nie jest modyfikowana, zamiast tego jest tworzony nowy strumień
- pętle często modyfikują kolejkcje