private static  Number times(Number a, Number b) 
  {
    int aType = getType(a);
    int bType = getType(b);
    
    int compType = (aType >= bType) ? aType : bType;
    switch (compType)  
    {
      case INT :
        return new Integer(a.intValue() * b.intValue());
      case LONG :
        return new Long(a.longValue() * b.longValue());
      case FLOAT :
        return new Float(a.floatValue() * b.floatValue());
      case DOUBLE :
        return new Double(a.doubleValue() * b.doubleValue());
      default :
        throw new IllegalStateException();
    }
  }
private static Number times ( Number a , Number b ) { int aType = getType ( a ) ; int bType = getType ( b ) ; int compType = ( aType >= bType ) ? aType : bType ; switch ( compType ) { case INT : return new Integer ( a . intValue ( ) * b . intValue ( ) ) ; case LONG : return new Long ( a . longValue ( ) * b . longValue ( ) ) ; case FLOAT : return new Float ( a . floatValue ( ) * b . floatValue ( ) ) ; case DOUBLE : return new Double ( a . doubleValue ( ) * b . doubleValue ( ) ) ; default : throw new IllegalStateException ( ) ; } }
Multiply two values