package net.sven_eisenhauer.swa_prakt1; public class ArithmeticSubstraction extends ArithmeticOperator { public ArithmeticSubstraction(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; } }