package net.sven_eisenhauer.swa_prakt1; public class ArithmeticAddition extends ArithmeticOperator { public ArithmeticAddition(ArithmeticExpression operand1, ArithmeticExpression operand2) { super(operand1, operand2); operandSign="+"; } @Override public Number evaluate() { Number res = null; Number num1 = operand1.evaluate(); Number num2 = operand2.evaluate(); if(num1 instanceof Integer && num2 instanceof Integer) { res = num1.intValue() + num2.intValue(); } else if(num1 instanceof Integer && num2 instanceof Long) { res = num1.intValue() + num2.longValue(); } else if(num1 instanceof Integer && num2 instanceof Short) { res = num1.intValue() + num2.shortValue(); } else if(num1 instanceof Integer && num2 instanceof Float) { res = num1.intValue() + num2.floatValue(); } else if(num1 instanceof Integer && num2 instanceof Double) { res = num1.intValue() + num2.doubleValue(); } else if(num1 instanceof Integer && num2 instanceof Byte) { res = num1.intValue() + num2.byteValue(); } else if(num1 instanceof Byte && num2 instanceof Long) { res = num1.byteValue() + num2.longValue(); } else if(num1 instanceof Byte && num2 instanceof Short) { res = num1.byteValue() + num2.shortValue(); } else if(num1 instanceof Byte && num2 instanceof Float) { res = num1.byteValue() + num2.floatValue(); } else if(num1 instanceof Byte && num2 instanceof Double) { res = num1.byteValue() + num2.doubleValue(); } else if(num1 instanceof Byte && num2 instanceof Byte) { res = num1.byteValue() + num2.byteValue(); } else if(num1 instanceof Byte && num2 instanceof Integer) { res = num1.byteValue() + num2.intValue(); } else if(num1 instanceof Short && num2 instanceof Long) { res = num1.shortValue() + num2.longValue(); } else if(num1 instanceof Short && num2 instanceof Short) { res = num1.shortValue() + num2.shortValue(); } else if(num1 instanceof Short && num2 instanceof Float) { res = num1.shortValue() + num2.floatValue(); } else if(num1 instanceof Short && num2 instanceof Double) { res = num1.shortValue() + num2.doubleValue(); } else if(num1 instanceof Short && num2 instanceof Byte) { res = num1.shortValue() + num2.byteValue(); } else if(num1 instanceof Short && num2 instanceof Integer) { res = num1.shortValue() + num2.intValue(); } else if(num1 instanceof Long && num2 instanceof Long) { res = num1.longValue() + num2.longValue(); } else if(num1 instanceof Long && num2 instanceof Short) { res = num1.longValue() + num2.shortValue(); } else if(num1 instanceof Long && num2 instanceof Float) { res = num1.longValue() + num2.floatValue(); } else if(num1 instanceof Long && num2 instanceof Double) { res = num1.longValue() + num2.doubleValue(); } else if(num1 instanceof Long && num2 instanceof Byte) { res = num1.longValue() + num2.byteValue(); } else if(num1 instanceof Long && num2 instanceof Integer) { res = num1.longValue() + num2.intValue(); } else if(num1 instanceof Float && num2 instanceof Long) { res = num1.floatValue() + num2.longValue(); } else if(num1 instanceof Float && num2 instanceof Short) { res = num1.floatValue() + num2.shortValue(); } else if(num1 instanceof Float && num2 instanceof Float) { res = num1.floatValue() + num2.floatValue(); } else if(num1 instanceof Float && num2 instanceof Double) { res = num1.floatValue() + num2.doubleValue(); } else if(num1 instanceof Float && num2 instanceof Byte) { res = num1.floatValue() + num2.byteValue(); } else if(num1 instanceof Float && num2 instanceof Integer) { res = num1.floatValue() + num2.intValue(); } else if(num1 instanceof Double && num2 instanceof Long) { res = num1.doubleValue() + num2.longValue(); } else if(num1 instanceof Double && num2 instanceof Short) { res = num1.doubleValue() + num2.shortValue(); } else if(num1 instanceof Double && num2 instanceof Float) { res = num1.doubleValue() + num2.floatValue(); } else if(num1 instanceof Double && num2 instanceof Double) { res = num1.doubleValue() + num2.doubleValue(); } else if(num1 instanceof Double && num2 instanceof Byte) { res = num1.doubleValue() + num2.byteValue(); } else if(num1 instanceof Double && num2 instanceof Integer) { res = num1.doubleValue() + num2.intValue(); } return res; } }