Language Intermediário

Extraia lógica compartilhada em interfaces usando métodos privados.

✕ 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));
    }
}
Viu um problema com este código? Nos avise.
🧩

Reuso de código

Compartilhe lógica entre métodos default sem duplicação.

🔐

Encapsulamento

Detalhes de implementação ficam ocultos das classes que implementam a interface.

🧹

Interfaces DRY

Chega de copiar e colar entre métodos default.

Abordagem Antiga
Lógica duplicada
Abordagem Moderna
Métodos privados
Desde o JDK
9
Dificuldade
Intermediário
Métodos privados em interfaces
Disponível

Amplamente disponível desde o JDK 9 (set 2017)

O Java 9 permite métodos privados em interfaces, possibilitando compartilhar código entre métodos default sem expor detalhes de implementação às classes que implementam a interface.

Compartilhar 𝕏 🦋 in