Language Początkujący

Dodawaj statyczne metody narzędziowe bezpośrednio do interfejsów zamiast tworzenia osobnych klas narzędziowych.

✕ 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ć.
📦

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
Statyczne metody w interfejsach
Dostępne

Szeroko dostępne od JDK 8 (marzec 2014)

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().