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

Java 如何在实现接口的类中实现静态方法?,java,static-methods,interface-implementation,Java,Static Methods,Interface Implementation,我正在实现一个实现接口的java类。 重点是,这个类中的一个方法必须是静态的,但是在接口中我不能(众所周知)将一个方法声明为静态的,如果我试图在类中声明它,我会得到这个错误:“这个静态方法不能从InterfaceName隐藏实例方法” 我在这个网站上搜索过,但没有找到任何解决方案,只有一个建议,即创建一个实现接口的抽象类,然后在类中扩展抽象类,但它不起作用 有什么建议吗 谢谢大家 链接mvw posted()描述了不允许在接口中使用静态方法的原因,以及为什么重写静态方法不是一个好主意(因此是不允

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

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

有什么建议吗

谢谢大家

链接mvw posted()描述了不允许在接口中使用静态方法的原因,以及为什么重写静态方法不是一个好主意(因此是不允许的)

了解您希望在什么情况下使用静态方法会很有帮助。如果您只想调用该类的静态方法,请按照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;
    }
}

使用不同的名称或参数列表。是否必须重写静态方法?我认为Java中甚至不允许使用静态方法隐藏实例方法,这是令人困惑的。要么从接口中删除该方法,要么避免对静态方法使用相同的名称。因此,在实现接口的类中不能有静态方法?