I'm trying to take 2 values and cast them to Integer or Double, but I'm unable to do so in a simple manner as described below, because the variable declaration can't be done inside a block statement:
if (args.get(0) instanceof Integer) {
Integer left = (Integer) args.get(0);
} else {
Double left = (Double) args.get(0);
}
if (args.get(1) instanceof Integer) {
Integer right = (Integer) args.get(1);
} else {
Double right = (Double) args.get(1)
}
return left + right; // this is not allowed
Of course, a trivial solution would be to exhaust all 4 combinations:
if (args.get(0) instanceof Integer && args.get(1) instanceof Integer) {
return ((Integer) args.get(0)) + ((Integer) args.get(1));
} else if ...
However, I assume there is a simple and well-known design pattern to achieve what I want much more eloquently.