static Number toNumber()

in src/main/java/org/apache/commons/configuration2/convert/PropertyConverter.java [604:634]


    static Number toNumber(final Object value, final Class<?> targetClass) throws ConversionException {
        if (value instanceof Number) {
            return (Number) value;
        }
        final String str = Objects.toString(value, null);
        if (StringUtils.startsWithAny(str, HEX_PREFIX)) {
            try {
                return new BigInteger(str.substring(HEX_PREFIX.length()), HEX_RADIX);
            } catch (final NumberFormatException nex) {
                throw new ConversionException("Could not convert " + str + " to " + targetClass.getName() + "! Invalid hex number.", nex);
            }
        }

        if (StringUtils.startsWithAny(str, BIN_PREFIX)) {
            try {
                return new BigInteger(str.substring(BIN_PREFIX.length()), BIN_RADIX);
            } catch (final NumberFormatException nex) {
                throw new ConversionException("Could not convert " + str + " to " + targetClass.getName() + "! Invalid binary number.", nex);
            }
        }

        try {
            final Constructor<?> constr = targetClass.getConstructor(CONSTR_ARGS);
            return (Number) constr.newInstance(str);
        } catch (final InvocationTargetException itex) {
            throw new ConversionException("Could not convert " + str + " to " + targetClass.getName(), itex.getTargetException());
        } catch (final Exception ex) {
            // Treat all possible exceptions the same way
            throw new ConversionException("Conversion error when trying to convert " + str + " to " + targetClass.getName(), ex);
        }
    }