覆盖静态方法功能

时间:2017-01-24 06:51:00

标签: java static

我们有类库

class A {
    public void callWorkflow()  {
      B b = new B();
    }
}

class B {
    public void callStatic() {
      C.someMethod();
    }
}

class C {
    public static someMethod() {}
}

我们实际上是在尝试更改静态方法someMethod的功能。有没有办法解决这个问题而不改变调用层次结构?

2 个答案:

答案 0 :(得分:3)

您不能Override static方法。在我看来,从方法static中删除someMethod(),然后在类C中创建类B的对象。然后调用方法。

Class A{
    public void callWorkflow()  {
      B b = new B();}
}
Class B{
    public void callStatic(){
      C c = new C();
      c.someMethod();}
}
Class C{
    public someMethod(){}
}

答案 1 :(得分:1)

无法覆盖static方法。

这就是为什么这些方法中的一种比调用静态方法更受欢迎:

  • 注入另一个将在非静态方法中提供功能并通过注入对象调用它的对象(服务)
  • 使静态方法成为一个瘦包装器,只需将工作委托给一些可以配置的非静态对象(比如在slf4j的logger中)