Possible Duplicate:
Long list of if statements in Java
I was tasked to work with some code, and there is a giant if-else-if chain (100+ else-ifs) that checks Strings.
What are some good techniques to update this code as to where the if-else-if chain can be shrunken down to something much more manageable.
The chain looks something like this:
if(name.equals("abc")){ do something } else if(name.equals("xyz")){ do something different } else if(name.equals("mno")){ do something different } ...... ..... else{ error }
The conditional operator (or Ternary operator) is an alternative for 'if else statement'.
You can extract the code in each branch to a separate method, then turn the methods into implementations of a common base interface (let's call it Handler
). After that, you can fill a Map<String, Handler>
and just look up and execute the right handler for given string.
Unfortunately the implementation of 100+ subclasses for the interface requires quite a lot of boilerplate code, but currently there is no simpler way in Java to achieve this. Implementing the cases as elements of an Enum
may help somewhat - here is an example. The ideal solution would be using closures / lambdas, but alas we have to wait till Java 8 for that...
Some options / ideas:
hashMap.get(name).doSomething();
namedObject.doSomething()
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With