从Java 9开始,接口中的方法可以是私有的。私有方法可以是静态方法,也可以是实例方法。由于私有方法只能在接口本身的方法中使用,因此它们的使用仅限于接口其他方法的辅助方法。
Cay S. Horstmann,核心Java第一册-基础
我知道我们可以将通用功能放在私有方法中,而不是公开使用。但是我们可以在这里有两种私有方法:
private
private static
使用private static
方法是可以理解的,但是什么时候应该使用private
方法呢?我们不在这里处理实例,因为这是一个接口,那么为什么private
允许创建方法?我们不是只需要private static
方法吗?
好的,再次尝试实际回答OP的问题。当需要从私有方法调用接口上的另一个非静态方法时,私有方法不能是静态的。例如,如果下面的私有方法是静态的,就会出现编译错误:
public interface InterfaceWithMethods {
public default void doSomething() {
doSomethingCommon();
}
public default void doSomethingElse() {
doSomethingCommon();
}
public void actuallyDoSomething();
private void doSomethingCommon() {
System.out.println("Do something first.");
actuallyDoSomething();
}
}
Run Code Online (Sandbox Code Playgroud)