java - 如何确保使用接口(interface)实现公共(public)静态函数

标签 java interface java-8

从 Java 8 开始,我们可以在接口(interface)中定义静态方法和默认方法。但我需要确保在实现特定接口(interface)(例如interface A)的所有类中实现一个公共(public)静态方法(例如foo())。我该如何做到这一点,或者这是否可能?

接口(interface)A:

package com.practice.misc.interfacetest;

public interface A {
    public static Object foo(); //Eclipse shows error : 'This method requires a body instead of a semicolon'
    String normalFunc();
}

B类:

package com.practice.misc.interfacetest;

public class B implements A{

    @Override
    public String normalFunc() {
        return "B.normalFunc";
    }
//I need to ensure that I have to define function foo() too

}

C类:

package com.practice.misc.interfacetest;

public class C implements A{

    @Override
    public String normalFunc() {
        return "C.normalFunc";
    }
//I need to ensure that I have to define function foo() too

}

编辑1: 实际案例:

我在所有实现类中都有一个公共(public)静态方法 getInstance() (返回该类的 Singleton 实例),并且我想确保其他开发人员将来编写的所有类都必须具有该静态方法在他们的类里面实现。我可以简单地使用反射通过从接口(interface)的静态方法调用 getInstance() 方法来返回该实例,但我想确保每个人都实现 getInstance() > 在所有实现类中。

最佳答案

接口(interface)中的静态方法不能继承(1)。如果是类,它们是继承的,但不能覆盖它们 (2);因此你想要做的事情实际上是不可能的。

如果您希望所有类都实现您的方法,为什么不简单地使其抽象(并且隐式public)开始,以便每个人都被迫来实现它。

关于java - 如何确保使用接口(interface)实现公共(public)静态函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49637472/

相关文章:

Java - 外观和感觉问题

java - 如何指示一个类将具有特定的静态方法?

c# - 如何实现定义另一个接口(interface)元素的接口(interface)

java - 具有不同对象类型的重复代码

java - 嵌套流异常

java - 数据和大小更改后如何刷新表模型

java - 无法从 X509Certificate 的 X500Principal 获取 UniqueIdentifier

JavaFX:如何禁用 TextArea 的多行选项

java - 错误: compareTo(Object) in Car cannot implement compareTo(T) in Comparable

Java 8 流媒体 : How to convert list of objects to a list of its selected properties