Eclipse重构重写方法分为final和abstract部分

时间:2012-07-31 10:16:54

标签: eclipse refactoring

我有一个方法,我想重构

基本上我想在摘要和最后部分中拆分顶级方法。 有问题的方法在很多地方被覆盖,其中添加了额外的功能,但最终总是进行超级调用。

现在代码基本上如下: (并非所有的扩展类都会覆盖,但是那些可以这样做的,以这种方式执行)

class Base {

public Object getStuff(String key) {
 out = //code to get data from the Database.
 return out
}

class Extended1 extends Base {
   public Object getStuff(String key) {
      if("some_non_db_value".equals(key)) {
         return "some custom stuff";
      }
      return super.getStuff(key);
    }
}

我想要的结果是:

class Base {

public final Object getStuff(String key) {
   out = getCustom(key);
   if(out != null) {
      return custom;
   }

   out = //code to get data from the Database.
   return out
}

public abstract Object getCustom(String key);

}

class Extended1 extends Base {
   public Object getCustom(String key) {
      if("some_non_db_value".equals(key)) {
         return "some custom stuff";
      }
      return null;
    }
}

我希望有一个重构动作(或部分重构)来达到(或接近)这一点。

1 个答案:

答案 0 :(得分:3)

我首先要重命名getStuff()以获取Custom(),它将处理所有扩展类。然后更改Base类应该相对容易。