在 Java 8 及更高版本中,静态方法是允许在接口中使用。以前的版本中并非如此,这让许多程序员想知道为什么。
Java 8 引入了静态接口方法以及重写具有默认实现的可用实例方法。接口现在可以包含静态方法,但仍然不能有实例字段。
静态方法不能被重写,因为它们在编译时解析。这意味着编译器可以确定要调用的确切类和方法,而无需咨询对象实例。实例方法的动态调度是必要的,因为编译器无法在运行时确定对象的精确类型。
与实例方法相反,静态方法直接与类关联。这消除了动态分派的需要,因为编译器已经知道所需的类和方法。因此,重写静态方法是不必要且不切实际的。
可以在不使用接口的情况下为 IXMLized 实现强制执行强制工厂方法。使用工厂方法的代码可以显式指定具体类型,从而允许编译器验证合规性。
如果创建了一个不带“构造函数”的 IXMLized 实现并将其传递给需要它的代码,则该代码仍然将其视为有效的 IXMLable。这是因为构造是一个实现细节,而不是接口的一部分。任何单独与界面交互的代码都不受影响。
以上是为什么 Java 8 之前的 Java 接口中不允许使用静态方法?的详细内容。更多信息请关注PHP中文网其他相关文章!