亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> java

Java 9 接口私有方法:增强封装与代码复用

演进脉络

版本接口可包含成员
Java 7 及之前常量、抽象方法
Java 8+ 默认方法、静态方法
Java 9+ 私有方法、私有静态方法

私有方法解决的问题

Java 8 默认方法/静态方法共享逻辑时,只能再写默认/静态方法,导致实现细节暴露在接口中。Java 9 私有方法允许将共享逻辑封装为 private,仅供接口内部默认/静态方法调用。

语法示例

interface Logging {
    String ORACLE = "Oracle_Database";
    String MYSQL = "MySql_Database";

    // 私有实例方法:供默认方法调用
    private void log(String message, String prefix) {
        getConnection();
        System.out.println("Log Message : " + prefix);
        closeConnection();
    }

    // 私有静态方法:供静态/默认方法调用
    private static void getConnection() {
        System.out.println("Open Database connection");
    }
    private static void closeConnection() {
        System.out.println("Close Database connection");
    }

    // 默认方法复用私有逻辑
    default void logInfo(String message) { log(message, "INFO"); }
    default void logWarn(String message) { log(message, "WARN"); }
    default void logError(String message) { log(message, "ERROR"); }
    default void logFatal(String message) { log(message, "FATAL"); }

    // 静态工具方法
    static void blowHorn() { System.out.println("Blowing horn!!!"); }
}

实现类极简化

final class LogOracle implements Logging { }
final class LogMySql implements Logging { }

实现类零代码,所有逻辑在接口内复用,输出:

Open Database connection
Log Message : INFO
Close Database connection
Open Database connection
Log Message : WARN
Close Database connection
Open Database connection
Log Message : ERROR
Close Database connection
Open Database connection
Log Message : FATAL
Close Database connection

多重默认方法冲突解决(回顾)

实现类实现多个接口含同名默认方法时:

  1. 类自行重写覆盖。
  2. 显式调用 InterfaceName.super.method() 选择特定实现。

设计原则

java

  1. Java 方法:定义、调用与高效使用全指南
  2. Java 字符串方法完全参考
  3. Java 抽象类与抽象方法完全指南
  4. 精通 Java 接口:概念、实现与最佳实践
  5. Java Collection 接口:核心概念与常用方法
  6. 掌握 Java NavigableSet 接口:导航、排序与实战示例
  7. 掌握 Java Lambda 表达式:从基础到 Stream API 实战
  8. Java String toLowerCase() 与 toUpperCase():区域感知的大小写转换
  9. Java 接口全解析:定义契约、默认方法、多实现与标记接口
  10. Java 发送邮件完整指南:从基础到进阶实战
  11. Java 9 集合工厂方法:一行代码创建不可变 List/Set/Map
  12. Java 8 默认方法:接口演进与向后兼容的关键机制