org.springframework.util
Class NumberUtils

java.lang.Object
  extended by org.springframework.util.NumberUtils

public abstract class NumberUtils
extends java.lang.Object

Miscellaneous utility methods for number conversion and parsing. Mainly for internal use within the framework; consider Jakarta's Commons Lang for a more comprehensive suite of string utilities.

Since:
1.1.2
Author:
Juergen Hoeller, Rob Harrop

Constructor Summary
NumberUtils()
           
 
Method Summary
static
<T extends java.lang.Number>
T
convertNumberToTargetClass(java.lang.Number number, java.lang.Class<T> targetClass)
          Convert the given number into an instance of the given target class.
private static java.math.BigInteger decodeBigInteger(java.lang.String value)
          Decode a BigInteger from a String value.
private static boolean isHexNumber(java.lang.String value)
          Determine whether the given value String indicates a hex number, i.e.
static
<T extends java.lang.Number>
T
parseNumber(java.lang.String text, java.lang.Class<T> targetClass)
          Parse the given text into a number instance of the given target class, using the corresponding decode / valueOf methods.
static
<T extends java.lang.Number>
T
parseNumber(java.lang.String text, java.lang.Class<T> targetClass, java.text.NumberFormat numberFormat)
          Parse the given text into a number instance of the given target class, using the given NumberFormat.
private static void raiseOverflowException(java.lang.Number number, java.lang.Class targetClass)
          Raise an overflow exception for the given number and target class.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

NumberUtils

public NumberUtils()
Method Detail

convertNumberToTargetClass

public static <T extends java.lang.Number> T convertNumberToTargetClass(java.lang.Number number,
                                                                        java.lang.Class<T> targetClass)
                                                             throws java.lang.IllegalArgumentException
Convert the given number into an instance of the given target class.

Parameters:
number - the number to convert
targetClass - the target class to convert to
Returns:
the converted number
Throws:
java.lang.IllegalArgumentException - if the target class is not supported (i.e. not a standard Number subclass as included in the JDK)
See Also:
Byte, Short, Integer, Long, BigInteger, Float, Double, BigDecimal

raiseOverflowException

private static void raiseOverflowException(java.lang.Number number,
                                           java.lang.Class targetClass)
Raise an overflow exception for the given number and target class.

Parameters:
number - the number we tried to convert
targetClass - the target class we tried to convert to

parseNumber

public static <T extends java.lang.Number> T parseNumber(java.lang.String text,
                                                         java.lang.Class<T> targetClass)
Parse the given text into a number instance of the given target class, using the corresponding decode / valueOf methods.

Trims the input String before attempting to parse the number. Supports numbers in hex format (with leading "0x", "0X" or "#") as well.

Parameters:
text - the text to convert
targetClass - the target class to parse into
Returns:
the parsed number
Throws:
java.lang.IllegalArgumentException - if the target class is not supported (i.e. not a standard Number subclass as included in the JDK)
See Also:
Byte.decode(java.lang.String), Short.decode(java.lang.String), Integer.decode(java.lang.String), Long.decode(java.lang.String), decodeBigInteger(String), Float.valueOf(java.lang.String), Double.valueOf(java.lang.String), BigDecimal.BigDecimal(String)

parseNumber

public static <T extends java.lang.Number> T parseNumber(java.lang.String text,
                                                         java.lang.Class<T> targetClass,
                                                         java.text.NumberFormat numberFormat)
Parse the given text into a number instance of the given target class, using the given NumberFormat. Trims the input String before attempting to parse the number.

Parameters:
text - the text to convert
targetClass - the target class to parse into
numberFormat - the NumberFormat to use for parsing (if null, this method falls back to parseNumber(String, Class))
Returns:
the parsed number
Throws:
java.lang.IllegalArgumentException - if the target class is not supported (i.e. not a standard Number subclass as included in the JDK)
See Also:
NumberFormat.parse(java.lang.String, java.text.ParsePosition), convertNumberToTargetClass(java.lang.Number, java.lang.Class), parseNumber(String, Class)

isHexNumber

private static boolean isHexNumber(java.lang.String value)
Determine whether the given value String indicates a hex number, i.e. needs to be passed into Integer.decode instead of Integer.valueOf (etc).


decodeBigInteger

private static java.math.BigInteger decodeBigInteger(java.lang.String value)
Decode a BigInteger from a String value. Supports decimal, hex and octal notation.

See Also:
BigInteger.BigInteger(String, int)