Statyczne metody w interfejsach
Dodawaj statyczne metody narzędziowe bezpośrednio do interfejsów zamiast tworzenia osobnych klas narzędziowych.
Porównanie kodu
✕ Java 7
// Separate utility class needed
public class ValidatorUtils {
public static boolean isBlank(
String s) {
return s == null ||
s.trim().isEmpty();
}
}
// Usage
if (ValidatorUtils.isBlank(input)) { ... }
✓ Java 8+
public interface Validator {
boolean validate(String s);
static boolean isBlank(String s) {
return s == null ||
s.trim().isEmpty();
}
}
// Usage
if (Validator.isBlank(input)) { ... }
Widzisz problem z tym kodem? Daj nam znać.
Dlaczego nowoczesne podejście wygrywa
Lepsza organizacja
Trzymaj powiązane narzędzia przy interfejsie, a nie w osobnej klasie.
Wykrywalność
Metody fabryczne i pomocnicze są tam, gdzie się ich spodziewasz.
Spójność API
Żadnych osobnych klas *Utils ani *Helper.
Stare podejście
Klasy narzędziowe
Nowoczesne podejście
Statyczne metody interfejsów
Od JDK
8
Poziom trudności
Początkujący
Wsparcie JDK
Statyczne metody w interfejsach
Dostępne
Szeroko dostępne od JDK 8 (marzec 2014)
Jak to działa
Przed Javą 8 metody narzędziowe związane z interfejsem musiały znajdować się w osobnej klasie (np. Collections dla Collection). Statyczne metody w interfejsach pozwalają trzymać powiązane narzędzia razem. Powszechne we współczesnych API jak Comparator.comparing(), Stream.of() i List.of().
Powiązana dokumentacja
Dowód