Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Eclipse refactor overridden method into final and abstract parts

I have a method which i'd like to refactor

Basically i want to split the top level method in a abstract and a final part. The method in question is overridden in quite a few places where additional functionality is added, but eventualy the super call is always made.

The code now basically look like: (not all Extending classes override but those that do, do it this way)

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);
    }
}

What i'd like as a result would be something like:

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;
    }
}

I was hoping there would be a refactor action (or partial refactor) to get to (or closer to) this point.

like image 968
pvgoddijn Avatar asked Feb 01 '26 15:02

pvgoddijn


1 Answers

I would first rename getStuff() to getCustom() which would take care of all the extended classes. Then changing the Base class should be relatively easy.

like image 173
Deepak Azad Avatar answered Feb 04 '26 05:02

Deepak Azad