Package org.apache.commons.beanutils.converters

# Class NumberConverter

java.lang.Object
org.apache.commons.beanutils.converters.AbstractConverter
org.apache.commons.beanutils.converters.NumberConverter

All Implemented Interfaces:
  `Converter`

Direct Known Subclasses:
  `BigDecimalConverter`, `BigIntegerConverter`, `ByteConverter`, `DoubleConverter`, `FloatConverter`, `IntegerConverter`, `LongConverter`, `ShortConverter`

public abstract class NumberConverter extends AbstractConverter
`Converter` implementation that handles conversion to and from java.lang.Number objects.

This implementation handles conversion for the following `java.lang.Number` types.

- `java.lang.Byte`
- `java.lang.Short`
- `java.lang.Integer`
- `java.lang.Long`
- `java.lang.Float`
- `java.lang.Double`
- `java.math.BigDecimal`
- `java.math.BigInteger`

## String Conversions (to and from)

This class provides a number of ways in which number conversions to/from Strings can be achieved:

- Using the default format for the default Locale, configure using:
  - `setUseLocaleFormat(true)`
- Using the default format for a specified Locale, configure using:
  - `setLocale(Locale)`
- Using a specified pattern for the default Locale, configure using:
  - `setPattern(String)`
- Using a specified pattern for a specified Locale, configure using:
  - `setPattern(String)`
  - `setLocale(Locale)`
- If none of the above are configured the `toNumber(String)` method is used to convert from String to Number and the Number's `toString()` method used to convert from Number to String.

N.B.Patterns can only be specified using the standard pattern characters and NOT in localized form (see `java.text.DecimalFormat`). For example to cater for number styles used in Germany such as `0.000,00` the pattern is specified in the normal form `0,000.00` and the locale set to `Locale.GERMANY`.

Since:
  1.8.0

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `NumberConverter(boolean allowDecimals)`
  Construct a java.lang.Number Converter that throws a `ConversionException` if a error occurs.
  `NumberConverter(boolean allowDecimals, Object defaultValue)`
  Construct a `java.lang.Number` Converter that returns a default value if an error occurs.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected String`
  `convertToString(Object value)`
  Convert an input Number object into a String.
  `protected <T> T`
  `convertToType(Class<T> targetType, Object value)`
  Convert the input object into a Number object of the specified type.
  `Locale`
  `getLocale()`
  Return the Locale for the Converter (or `null` if none specified).
  `String`
  `getPattern()`
  Return the number format pattern used to convert Numbers to/from a `java.lang.String` (or `null` if none specified).
  `boolean`
  `isAllowDecimals()`
  Return whether decimals are allowed in the number.
  `void`
  `setLocale(Locale locale)`
  Set the Locale for the Converter.
  `void`
  `setPattern(String pattern)`
  Set a number format pattern to use to convert Numbers to/from a `java.lang.String`.
  `void`
  `setUseLocaleFormat(boolean useLocaleFormat)`
  Set whether a format should be used to convert the Number.
  `String`
  `toString()`
  Provide a String representation of this number converter.

  ### Methods inherited from class org.apache.commons.beanutils.converters.AbstractConverter

  `conversionException, convert, convertArray, getDefault, getDefaultType, handleError, handleMissing, isUseDefault, setDefaultValue`

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### NumberConverter

    public NumberConverter(boolean allowDecimals)
    Construct a java.lang.Number Converter that throws a `ConversionException` if a error occurs.
    Parameters:
      `allowDecimals` - Indicates whether decimals are allowed

  - ### NumberConverter

    public NumberConverter(boolean allowDecimals, Object defaultValue)
    Construct a `java.lang.Number` Converter that returns a default value if an error occurs.
    Parameters:
      `allowDecimals` - Indicates whether decimals are allowed
      `defaultValue` - The default value to be returned

- ## Method Details

  - ### convertToString

    protected String convertToString(Object value) throws Throwable
    Convert an input Number object into a String.
    Overrides:
      `convertToString` in class `AbstractConverter`
    Parameters:
      `value` - The input value to be converted
    Returns:
      the converted String value.
    Throws:
      `Throwable` - if an error occurs converting to a String

  - ### convertToType

    protected <T> T convertToType(Class<T> targetType, Object value) throws Throwable
    Convert the input object into a Number object of the specified type.
    Specified by:
      `convertToType` in class `AbstractConverter`
    Type Parameters:
      `T` - Target type of the conversion.
    Parameters:
      `targetType` - Data type to which this value should be converted.
      `value` - The input value to be converted.
    Returns:
      The converted value.
    Throws:
      `Throwable` - if an error occurs converting to the specified type

  - ### getLocale

    public Locale getLocale()
    Return the Locale for the Converter (or `null` if none specified).
    Returns:
      The locale to use for conversion

  - ### getPattern

    public String getPattern()
    Return the number format pattern used to convert Numbers to/from a `java.lang.String` (or `null` if none specified).

    See `java.text.DecimalFormat` for details of how to specify the pattern.

    Returns:
      The format pattern.

  - ### isAllowDecimals

    public boolean isAllowDecimals()
    Return whether decimals are allowed in the number.
    Returns:
      Whether decimals are allowed in the number

  - ### setLocale

    public void setLocale(Locale locale)
    Set the Locale for the Converter.
    Parameters:
      `locale` - The locale to use for conversion

  - ### setPattern

    public void setPattern(String pattern)
    Set a number format pattern to use to convert Numbers to/from a `java.lang.String`.

    See `java.text.DecimalFormat` for details of how to specify the pattern.

    Parameters:
      `pattern` - The format pattern.

  - ### setUseLocaleFormat

    public void setUseLocaleFormat(boolean useLocaleFormat)
    Set whether a format should be used to convert the Number.
    Parameters:
      `useLocaleFormat` - `true` if a number format should be used.

  - ### toString

    public String toString()
    Provide a String representation of this number converter.
    Overrides:
      `toString` in class `AbstractConverter`
    Returns:
      A String representation of this number converter