Refactoring huge if ( ... instanceof ...)

Posted by Chris on Stack Overflow See other posts from Stack Overflow or by Chris
Published on 2010-12-22T07:50:38Z Indexed on 2010/12/22 7:54 UTC
Read the original article Hit count: 163

Filed under:
|

I'm currently trying to refactor a part of a project that looks like this:

Many classes

 B extends A; C extends A; D extends C; E extends B; F extends A; ...

And somewhere in the code:

if (x instanceof B){
 B n = (B) x;
 ...
}else if (x instanceof C){
 C n = (C) x;
 ...
}else if (x instanceof D){
 D n = (D) x;
 ...
}else if (x instanceof E){
 E n = (E) x;
 ...
}else if (x instanceof G){
 G n = (G) x;
 ...
}...

Above if-construct currently sits in a function with a CC of 19. Now my question is: Can I split this if-construct up in mutliple functions and let Java's OO do the magic? Or are there any catches I have to look out for?

My idea:

private void oopMagic(C obj){ ... Do the stuff from the if(x instanceof C) here}
private void oopMagic(D obj){ ... Do the stuff from the if(x instanceof D) here}
private void oopMagic(E obj){ ... Do the stuff from the if(x instanceof E) here}
....

and instead of the huge if:

oopMagic(x);

© Stack Overflow or respective owner

Related posts about java

Related posts about oop