Metodi privati nelle interfacce
Estrai la logica condivisa nelle interfacce usando metodi privati.
Confronto Codice
✕ 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));
}
}
Vedi un problema con questo codice? Faccelo sapere.
Perché vince l'approccio moderno
Riutilizzo del codice
Condividi la logica tra i metodi default senza duplicazione.
Incapsulamento
I dettagli di implementazione rimangono nascosti alle classi implementanti.
Interfacce DRY
Niente più copia-incolla tra i metodi default.
Approccio Vecchio
Logica duplicata
Approccio Moderno
Metodi privati
Dal JDK
9
Difficoltà
Intermedio
Supporto JDK
Metodi privati nelle interfacce
Disponibile
Ampiamente disponibile dal JDK 9 (settembre 2017)
Come funziona
Java 9 consente i metodi privati nelle interfacce, permettendo di condividere codice tra i metodi default senza esporre i dettagli di implementazione alle classi implementanti.
Documentazione Correlata