Od klas anonimowych do lambd i referencji do metod
Zastąp klasy anonimowe z jedną metodą zwięzłymi lambdami i referencjami do metod.
Porównanie kodu
✕ Anonymous class
button.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent event) {
save(event);
}
});
✓ Java 8+
button.addActionListener(this::save);
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Mniej kodu szablonowego
Eliminuje deklarację klasy i formalności związane z przesłanianiem metody.
Lepsza czytelność
Skupia uwagę na wykonywanej operacji.
Nadal bezpieczne typowo
Kompilator sprawdza sygnaturę docelowego interfejsu funkcyjnego.
Stare podejście
Klasa anonimowa
Nowoczesne podejście
Referencja do metody
Od JDK
8
Poziom trudności
Początkujący
Wsparcie JDK
Od klas anonimowych do lambd i referencji do metod
Dostępne
Dostępne od JDK 8 (marzec 2014).
Jak to działa
Interfejsy funkcyjne można implementować za pomocą lambd lub referencji do metod. Eliminuje to formalności związane z klasą anonimową, zachowując statyczne typowanie i ten sam kontrakt wywołania zwrotnego.
Powiązana dokumentacja
Dowód