Map<String, Object>转成类
时间: 2023-10-14 09:29:17 浏览: 211
可以通过使用Java反射机制来实现Map<String, Object>转成类的操作。以下是一个示例代码:
```
public static <T> T mapToClass(Map<String, Object> map, Class<T> clazz) throws Exception {
T obj = clazz.newInstance();
Field[] fields = clazz.getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
if (map.containsKey(field.getName())) {
Object value = map.get(field.getName());
if (value != null && field.getType() != value.getClass()) {
value = convertValue(field.getType(), value);
}
field.set(obj, value);
}
}
return obj;
}
private static Object convertValue(Class<?> type, Object value) {
if (type == String.class) {
return String.valueOf(value);
} else if (type == Integer.class || type == int.class) {
return Integer.parseInt(String.valueOf(value));
} else if (type == Long.class || type == long.class) {
return Long.parseLong(String.valueOf(value));
} else if (type == Double.class || type == double.class) {
return Double.parseDouble(String.valueOf(value));
} else if (type == Float.class || type == float.class) {
return Float.parseFloat(String.valueOf(value));
} else if (type == Boolean.class || type == boolean.class) {
return Boolean.parseBoolean(String.valueOf(value));
}
return value;
}
```
上述代码中的mapToClass方法接受一个Map<String, Object>对象和一个目标类Class<T>对象作为参数,返回一个转换后的目标类对象。该方法首先通过反射机制创建目标类对象,然后遍历目标类的所有属性,如果属性名在Map中存在对应的键,则将Map中对应的值赋给目标类对象的属性。在赋值时,如果属性类型和Map中对应的值的类型不一致,则需要进行类型转换,convertValue方法就是用来进行类型转换的。
阅读全文