Java 8 Flashcards

1
Q

Głowne feature Javy 8

A
  1. Wyrażenia Lambda (Lambda Expressions)
  2. Referencje do Metod (Method References)
  3. Interfejsy Funkcyjne (Functional Interfaces)
  4. Stream API
  5. Optional
  6. Nowe API Daty i Czasu
  7. Default Methods (Metody Domyślne)
  8. JVM Improvements
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Przykład użycia referencji do metody jako arugmentu w porównaniu do lambdy

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q
  1. Działanie w przypadku obecności wartości Optional
A
optionalOf.ifPresent(wartosc -> System.out.println("Wartość to: " + wartosc));
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Zwrócenie wartości lub domyślnej

A
String wartoscLubDomyslna = optionalNullable.orElse("domyslnaWartosc");
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q
  1. Ł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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q
  1. 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));
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Interfejs funkcyjny vs Klasa anonimowa vs Referencja do metody

A
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly