如何在实现接口的类中实现静态方法



我正在实现一个实现接口的java类
poi是,这个类中的方法必须是静态的,但在接口中,我不能(众所周知)将方法声明为静态的,如果我试图在类中声明它,我会得到这样的错误:"这个静态方法不能从InterfaceName隐藏实例方法"。

我在这个网站上搜索过,但没有找到任何解决方案,只是有人建议创建一个实现接口的抽象类,然后在类中扩展抽象类,但它不起作用。

有什么建议吗?

非常感谢大家!

发布的链接mvw(为什么我不能在Java接口中定义静态方法?)描述了不允许在接口中使用静态方法的原因,以及为什么重写静态方法不是一个好主意(因此是不允许的)。

知道你想在什么情况下使用静态方法会很有帮助。如果您只想调用类的一个静态方法,请按照andy256的建议给它另一个名称。如果你想从一个引用接口的对象调用它,你真的需要这个方法是静态的吗?

为了解决这个问题,我的建议是,如果你真的想调用一个与接口方法具有相同签名的静态方法,那么就调用一个私有静态方法:

class MyClass implememts SomeInterface {
    @Override
    public int someMethod(int arg1, int arg2) {
        return staticMethod(arg1, arg2);
    }
    private static int staticMethod(int arg1, int arg2) {
        // TODO: do some useful stuff...
        return arg1 + arg2;
    }
}

最新更新