搁浅环境中的覆盖方法

时间:2015-11-17 18:08:47

标签: java reflection override

所以,让我们说我有A级方法" foo"返回int" 1":

public class A{
      public int foo(){
           return 1;
      }
}

然后我让B级重写A#foo而不是返回int" 2":

public class B extends A{
      @Override
      public int foo(){
            return 2;
      }
}

但问题是,A类来自外部源,每次更新都会更改包名称。我可以使用反射来逃避它,但这只适用于方法和构造函数。如何在不违反A类更新的情况下覆盖A#foo?

1 个答案:

答案 0 :(得分:0)

您可以使用定义所需方法的界面。

public interface C{
  public int foo();
}

然后是A类的类代理

public class D implements C{ 

      public int foo(){
            A a = new A();
            return a.foo();
      }
}

最后你的B类扩展D并覆盖它的方法。

public class B extends D{
      @Override
      public int foo(){
            return 2;
      }
}

每次你想要使用A时,你需要使用D代替。