我正在实现一个实现接口的java类。 poi是,这个类中的方法必须是静态的,但在接口中我不能(如已知)将方法声明为static,如果我尝试在类中声明它,我会收到此错误:“这个静态方法无法从InterfaceName“隐藏实例方法”。
我在这个网站上搜索过但是我没有找到任何解决方案,但是有一个建议说要创建一个实现接口的抽象类,然后在类中扩展抽象类,但它不起作用。
有什么建议吗?
非常感谢大家!
发布的链接mvw(Why can't I define a static method in a Java interface?)描述了不允许接口中的静态方法的原因以及为什么重写静态方法并不是一个好主意(因此不允许)。
知道在什么情况下你想使用静态方法会很有帮助。如果你只是想调用类的静态方法,请给它另一个名字,因为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;
}
}