【问题标题】:helper function for default interface method默认接口方法的辅助函数
【发布时间】:2020-01-18 07:57:29
【问题描述】:

我需要合并一些辅助方法来辅助 Java 8 上接口的默认方法 - 以便更好地组织代码。
因此,唯一可用的选项似乎是使用'static' 限定它们 - 从而使它们暴露在外部。
有没有更好的方法来实现这一点 - 迁移到 Java 9 不是一种选择。

【问题讨论】:

  • 您能否详细说明您的应用程序的当前设计实现(static)?因为这将有助于其他人理解和评估替代方案。

标签: java java-8 interface default-implementation


【解决方案1】:

如果您可以选择升级到更新的版本,您实际上可以在接口中使用private 方法

在 Java 9 和更新版本中,接口允许私有(非抽象)方法。见JSL 9.4

接口主体中的方法可以声明为publicprivate(第6.6 节)。如果没有给出访问修饰符,则方法隐式为public...

而且这些私有方法也可能是静态的(来源相同):

...允许接口方法声明同时包含私有和静态。


如果您必须继续使用 Java 8,则可以使用包私有类和方法(是的,这不是该类型私有的,但包私有是更好的选择)

public interface Interface {
    default void doSomething() {
        InterfaceHelper.doSomething();
    }
}

class InterfaceHelper {
    static void doSomething() { //package-private class and method

    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-12-05
    • 1970-01-01
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2019-11-14
    相关资源
    最近更新 更多