public class SafeParserUtil {
public static final String TRUE_VALUE = "true";
public static final String FALSE_VALUE = "false";
public static final String TRUE_INT_VALUE = "1";
public static final String FALSE_INT_VALUE = "0";
public SafeParserUtil() {
}
public static Integer parseInt(Object value) {
if (value == null) {
return null;
} else {
String valueStr = value.toString();
if (StringUtils.isBlank(valueStr)) {
return null;
} else {
if ("true".equals(valueStr)) {
valueStr = "1";
} else if ("false".equals(valueStr)) {
valueStr = "0";
} else if (valueStr.contains(".")) {
int index = valueStr.indexOf(".");
valueStr = valueStr.substring(0, index);
}
return Integer.valueOf(valueStr);
}
}
}
public static Long parseLong(Object value) {
if (value == null) {
return null;
} else {
String valueStr = value.toString();
return StringUtils.isBlank(valueStr) ? null : Long.valueOf(valueStr);
}
}
public static String parseString(Object value) {
return value == null ? null : value.toString();
}
public static Double parseDouble(Object value) {
if (value == null) {
return null;
} else {
String valueStr = value.toString();
return StringUtils.isBlank(valueStr) ? null : Double.valueOf(valueStr);
}
}
public static Boolean parseBoolean(Object value) {
if (value == null) {
return null;
} else {
String valueStr = value.toString();
return StringUtils.isBlank(valueStr) ? null : Boolean.valueOf(valueStr);
}
}
public static Byte parseByte(Object value) {
Integer temp = parseInt(value);
return temp == null ? null : (byte)temp;
}
public static Short parseShort(Object value) {
Integer temp = parseInt(value);
return temp == null ? null : (short)temp;
}
public static Float parseFloat(Object value) {
if (value == null) {
return null;
} else {
String valueStr = value.toString();
return StringUtils.isBlank(valueStr) ? null : Float.valueOf(valueStr);
}
}
}
/**
* 数据类型转换工具类.
*/
public class DataTypeConvertUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(DataTypeConvertUtil.class);
private static Map<String, Method> convertMap = Maps.newHashMap();
private static Map<String, Class<?>> CONVERT_CLASS_MAP = Maps.newHashMap();
static {
try {
Class cls = SafeParserUtil.class;
convertMap.put("Int", cls.getMethod("parseInt", Object.class));
convertMap.put("Long", cls.getMethod("parseLong", Object.class));
convertMap.put("String", cls.getMethod("parseString", Object.class));
convertMap.put("Double", cls.getMethod("parseDouble", Object.class));
convertMap.put("Boolean", cls.getMethod("parseBoolean", Object.class));
convertMap.put("Byte", cls.getMethod("parseByte", Object.class));
convertMap.put("Short", cls.getMethod("parseShort", Object.class));
convertMap.put("Float", cls.getMethod("parseFloat", Object.class));
} catch (Exception e) {
LOGGER.error("初始化convertMap失败", e);
}
try {
CONVERT_CLASS_MAP.put("Map", Map.class);
CONVERT_CLASS_MAP.put("List", List.class);
} catch (Exception e) {
LOGGER.error("初始化CONVERT_CLASS_MAP失败", e);
}
}
public static Object convert(Object value, String resultType) throws ActuatorExeException {
if (value == null) {
return null;
}
Method method = convertMap.get(resultType);
if (method != null) {
try {
return method.invoke(null, value);静态方法可省略对象,直接用null替代,或用clas
} catch (Exception e) {
throw new ActuatorExeException(PlatformConstant.CONVERT_ERROR_CODE,
"类型转换失败, resultType:%s, value:%s", resultType, value);
}
}
Class<?> clazz = CONVERT_CLASS_MAP.get(resultType);
if (clazz != null && clazz.isAssignableFrom(value.getClass())) {
return value;
}
throw new ActuatorExeException(PlatformConstant.CONVERT_ERROR_CODE, "不支持指定的类型转换, resultType: " + resultType);
}
}
数据类型转换工具
猜你喜欢
转载自blog.csdn.net/maoyeqiu/article/details/119025184
今日推荐
周排行