如何在静态上下文中覆盖方法?

时间:2011-06-07 20:25:16

标签: java

Request是一个抽象类,带有抽象的onFinish方法。

Request.authenticate是一个实例化新Request对象的静态方法。为什么系统不让我用这种语法强制覆盖onFininsh ???

Request sqr = Request.authenticate(act, outerBundle) {
    @Override
    public void onFinish(String resp){System.out.println("HEY");}
};

1 个答案:

答案 0 :(得分:1)

您无法覆盖现有实例的方法。您可以做的最好是扩展请求。这是我的头脑,但这样的事情应该有效,假设你可以控制返回的Request的类型:

public class MyRequest extends Request
{
  private MyFinish _finish;
  public MyRequest(MyFinish finish)
  {
    _finish=finish;
  }

  public void setFinish(MyFinish finish)
  {
     _finish=finish;
  }

  @Override
  public void onFinish(String resp)
  {
    _finish.doFinish(resp);    
  }
}

public interface MyFinish
{
  public void doFinish(String resp);
}

然后,您将插入实现MyFinish的自定义整理类。