protected T fromString()

in src/main/java/com/univocity/parsers/conversions/NumericConversion.java [165:201]


	protected T fromString(String input) {
		for (int i = 0; i < formatters.length; i++) {
			position.setIndex(0);
			T out = (T) formatters[i].parse(input, position);
			if (formatters.length == 1 || position.getIndex() == input.length()) {
				if (out == null || numberType == Number.class) {
					return out;
				} else if (numberType == Double.class) {
					return (T) Double.valueOf(out.doubleValue());
				} else if (numberType == Float.class) {
					return (T) Float.valueOf(out.floatValue());
				} else if (numberType == BigDecimal.class) {
					if (out instanceof BigDecimal) {
						return out;
					}
					return (T) new BigDecimal(String.valueOf(out));
				} else if (numberType == BigInteger.class) {
					if (out instanceof BigInteger) {
						return out;
					}
					return (T) BigInteger.valueOf(out.longValue());
				} else if (numberType == Long.class) {
					return (T) Long.valueOf(out.longValue());
				} else if (numberType == Integer.class) {
					return (T) Integer.valueOf(out.intValue());
				} else if (numberType == Short.class) {
					return (T) Short.valueOf(out.shortValue());
				} else if (numberType == Byte.class) {
					return (T) Byte.valueOf(out.byteValue());
				}
				return out;
			}
		}
		DataProcessingException exception = new DataProcessingException("Cannot parse '{value}' as a valid number. Supported formats are: " + Arrays.toString(formats));
		exception.setValue(input);
		throw exception;
	}