Métodos privados en interfaces
Extrae lógica compartida en interfaces usando métodos privados.
Comparación de Código
✕ 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));
}
}
¿Ves un problema con este código? Cuéntanos.
Por qué gana la forma moderna
Reutilización de código
Comparte lógica entre métodos default sin duplicación.
Encapsulamiento
Los detalles de implementación permanecen ocultos a las clases implementadoras.
Interfaces DRY
No más copiar y pegar entre métodos default.
Enfoque Antiguo
Lógica duplicada
Enfoque Moderno
Métodos privados
Desde JDK
9
Dificultad
Intermedio
Soporte JDK
Métodos privados en interfaces
Disponible
Ampliamente disponible desde JDK 9 (sept. 2017)
Cómo funciona
Java 9 permite métodos privados en interfaces, lo que permite compartir código entre métodos default sin exponer detalles de implementación a las clases que las implementan.
Documentación Relacionada