默认接口方法的辅助功能

时间:2020-01-18 07:57:29

标签: java java-8 interface default-implementation

我需要合并一些辅助方法以帮助Java 8上的默认接口方法-更好地组织代码。
因此,唯一可行的选择似乎是使他们获得'static'的资格-从而使他们远离外界。
有没有更好的方法可以实现这一点-不能迁移到Java 9。

1 个答案:

答案 0 :(得分:3)

如果您可以选择升级到最新版本,那么实际上您可以在界面中使用private方法

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

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

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

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


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

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

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

    }
}