【发布时间】:2014-12-04 13:41:19
【问题描述】:
我有几个包含静态方法的 Java 类。我想确保这些静态方法由每个类实现。由于 Java 的接口中不允许声明静态方法,我该如何强制执行?
【问题讨论】:
标签: java interface static-methods
我有几个包含静态方法的 Java 类。我想确保这些静态方法由每个类实现。由于 Java 的接口中不允许声明静态方法,我该如何强制执行?
【问题讨论】:
标签: java interface static-methods
如果您有调用这些方法的代码,如果它们没有实现,它将无法通过编译。如果你不这样做,你就真的不需要它们。
【讨论】:
排序答案:你不能强制执行。
静态方法的继承方式与实例方法不同,因此无论如何您都无法将其用于任何有意义的事情:您不能调用 MySuperClass.staticMethod() 并期望某个子类来处理调用。这意味着您必须使用MySubClass.staticMethod() 调用它,在这种情况下,如果MySubClass 没有实现staticMethod,您将收到编译错误。
我建议您考虑使用单例或工厂模式解决它并使用实例方法:
MySuperClass.getInstance(parameter).yourMethod()
【讨论】:
static 方法在 Java8 中的接口上是允许的。
但是,没有办法强制类实现静态方法。
您唯一能做的就是使它们成为非静态的和abstract(在接口或abstract 类中)。
【讨论】: