TypeUtil { static public DataType getConstantDataType(Object value){ if(value instanceof String){ String string = (String)value; return getConstantDataType(string); } return TypeUtil.getDataType(value); } private  TypeUtil(); static String format(Object value); static Object parseOrCast(DataType dataType, Object value); static Object parse(DataType dataType, String value); static DaysSinceDate parseDaysSinceDate(LocalDate epoch, String value); static boolean equals(DataType dataType, Object value, Object referenceValue); static DataType getDataType(Object value); static DataType getDataType(Collection<?> values); static DataType getCommonDataType(DataType left, DataType right); static OpType getOpType(DataType dataType); static Object cast(DataType dataType, Object value); static V cast(Class<? extends V> clazz, Object value); static DataType getConstantDataType(Object value); static DataType getConstantDataType(String value);  }
@Test public void getConstantDataType(){ assertEquals(DataType.STRING, TypeUtil.getConstantDataType("")); assertEquals(DataType.INTEGER, TypeUtil.getConstantDataType("-1")); assertEquals(DataType.INTEGER, TypeUtil.getConstantDataType("1")); assertEquals(DataType.INTEGER, TypeUtil.getConstantDataType("+1")); assertEquals(DataType.STRING, TypeUtil.getConstantDataType("1E0")); assertEquals(DataType.STRING, TypeUtil.getConstantDataType("1X")); assertEquals(DataType.DOUBLE, TypeUtil.getConstantDataType("-1.0")); assertEquals(DataType.DOUBLE, TypeUtil.getConstantDataType("1.0")); assertEquals(DataType.DOUBLE, TypeUtil.getConstantDataType("+1.0")); assertEquals(DataType.DOUBLE, TypeUtil.getConstantDataType("1.0E-1")); assertEquals(DataType.DOUBLE, TypeUtil.getConstantDataType("1.0E1")); assertEquals(DataType.DOUBLE, TypeUtil.getConstantDataType("1.0E+1")); assertEquals(DataType.STRING, TypeUtil.getConstantDataType("1.0X")); }