Méthodes privées dans les interfaces
Extrayez la logique partagée dans les interfaces en utilisant des méthodes privées.
Comparaison de Code
✕ 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.
Pourquoi la méthode moderne gagne
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
Support JDK
Méthodes privées dans les interfaces
Disponible
Disponible depuis JDK 9 (sept. 2017)
Comment ça fonctionne
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.
Documentation Associée