我正在实现一个实现接口的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;
}
}