Language Fortgeschritten

Gemeinsame Logik in Interfaces mithilfe privater Methoden auslagern.

✕ Java 8
interface Logger {
    default void logInfo(String msg) {
        System.out.println(
            "[INFO] " + timestamp() + msg);
    }
    default void logWarn(String msg) {
        System.out.println(
            "[WARN] " + timestamp() + msg);
    }
}
✓ Java 9+
interface Logger {
    private String format(String lvl, String msg) {
        return "[" + lvl + "] " + timestamp() + msg;
    }
    default void logInfo(String msg) {
        IO.println(format("INFO", msg));
    }
    default void logWarn(String msg) {
        IO.println(format("WARN", msg));
    }
}
Problem mit diesem Code entdeckt? Sag uns Bescheid.
🧩

Code-Wiederverwendung

Logik zwischen Default-Methoden ohne Duplizierung teilen.

🔐

Kapselung

Implementierungsdetails bleiben vor implementierenden Klassen verborgen.

🧹

DRY-Interfaces

Kein Copy-Paste mehr zwischen Default-Methoden.

Alter Ansatz
Duplizierte Logik
Moderner Ansatz
Private Methoden
Seit JDK
9
Schwierigkeitsgrad
Fortgeschritten
Private Interface-Methoden
Verfügbar

Seit JDK 9 allgemein verfügbar (Sept. 2017)

Java 9 erlaubt private Methoden in Interfaces, sodass Code zwischen Default-Methoden geteilt werden kann, ohne Implementierungsdetails an implementierende Klassen preiszugeben.

Teilen 𝕏 🦋 in