Language 中级

使用私有方法提取接口中的共享逻辑。

✕ 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));
    }
}
发现此代码有问题? 告诉我们。
🧩

代码复用

在默认方法之间共享逻辑,避免重复。

🔐

封装

实现细节对实现类保持隐藏。

🧹

DRY 接口

不再需要在默认方法之间复制粘贴。

旧方式
重复逻辑
现代方式
私有方法
自 JDK
9
难度
中级
接口私有方法
可用

自 JDK 9 起广泛可用(2017 年 9 月)

Java 9 允许在接口中使用私有方法,使您可以在默认方法之间共享代码,而不向实现类暴露实现细节。

分享 𝕏 🦋 in