Language Intermédiaire

Extrayez la logique partagée dans les interfaces en utilisant des méthodes privées.

✕ 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));
    }
}
Un problème avec ce code ? Dites-le nous.
🧩

Réutilisation du code

Partagez la logique entre les méthodes default sans duplication.

🔐

Encapsulation

Les détails d'implémentation restent cachés aux classes implémentantes.

🧹

Interfaces DRY

Fini le copier-coller entre les méthodes default.

Ancienne Approche
Logique dupliquée
Approche Moderne
Méthodes privées
Depuis JDK
9
Difficulté
Intermédiaire
Méthodes privées dans les interfaces
Disponible

Disponible depuis JDK 9 (sept. 2017)

Java 9 permet les méthodes privées dans les interfaces, ce qui permet de partager du code entre les méthodes default sans exposer les détails d'implémentation aux classes qui les implémentent.

Partager 𝕏 🦋 in