对于Java9和更高版本,我知道private接口方法可以在接口中声明和实现,然后由(同一接口的) default接口方法调用。
但是,static接口方法不能调用private接口方法。
现在,我还了解到private static接口方法可以在接口中声明/实现,然后由default和static方法调用。
所以在我看来,private static接口方法的能力是private接口方法的“超集”。
如果是这样,是否存在使用private接口方法比使用private static接口方法更可取的情况?
例如:
public interface Schedule {
default void wakeUp() { checkTime(7); }
// static void sleep() { checkTime(21); } // compile error if private interface method called
private void checkTime(int time) { // if so, why not always use private static method instead?
// implementation omitted
}
}发布于 2021-05-10 18:22:00
非静态方法本身可以调用其他实例方法。
public interface Schedule {
LocalTime getCurrentTime();
default void wakeUp() { checkTime(7); }
private void checkTime(int time) {
if (getCurrentTime().isAfter(/*something*/)) {
// do something
}
}
}如果它是静态的,它就不能做到这一点。如果不需要调用另一个实例方法,请将其设为静态方法。
这与编写普通类时应该遵循的逻辑基本相同。
https://stackoverflow.com/questions/67468553
复制相似问题