vendredi 6 mai 2016

Java casting in if/else block

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.

Aucun commentaire:

Enregistrer un commentaire