我需要合并一些辅助方法来辅助 Java 8 上的默认接口方法 - 以便更好地组织代码。
所以唯一可用的选择似乎是用'static'
- 来限定它们,从而让它们暴露在外面。
有没有更好的方法来实现这一点 - 迁移到 Java 9 不是一种选择。
问问题
410 次
1 回答
3
如果您可以选择升级到更新的版本,您实际上可以private
在接口中使用方法
在 Java 9 和更新版本中,接口允许私有(非抽象)方法。请参阅JSL 9.4:
接口主体中的方法可以声明
public
或private
(第 6.6 节)。如果没有给出访问修饰符,则该方法是隐式的public
...
这些私有方法也可能是静态的(相同的来源):
...允许接口方法声明同时包含私有和静态。
如果您必须继续使用 Java 8,则可以使用包私有类和方法(是的,这不是该类型私有的,但包私有是更好的选择)
public interface Interface {
default void doSomething() {
InterfaceHelper.doSomething();
}
}
class InterfaceHelper {
static void doSomething() { //package-private class and method
}
}
于 2020-01-18T08:06:47.770 回答