这篇文章主要介绍了 java Map转Object与Object转Map实现代码的相关资料,需要的朋友可以参考下
java Map转Object与 Object转Map
1、定义一个实体类:
package reflect;
public class User {
private String name;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
2、Map转Object转换如下:
package reflect;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
public class testMapToObject {
public static void main(String[] args){
//假设有一个Map存放了一个对象的姓名和年龄
Map map = new HashMap();
map.put("name", "Kobi");
map.put("age", 39);
User user = transferMapToUser(map,User.class);
System.out.println(user.getName());
System.out.println(user.getAge());
}
public static T transferMapToUser(Map map,Class classT){
try {
return transfer(map,classT.newInstance());
} catch (InstantiationException ex) {
System.out.println("what the fuck?");
} catch (IllegalAccessException ex) {
System.out.println("what the fuck?");
}
return null;
}
public static T transfer(Map map,Object obj){
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (map.containsKey(key)) {
Object value = map.get(key);
// 得到property对应的setter方法
Method setter = property.getWriteMethod();
try {
setter.invoke(obj, value);
} catch (IllegalArgumentException ex) {
System.out.println("what the fuck?");
}
}
}
} catch (Exception ex) {
System.out.println("what the fuck?");
}
return (T) obj;
}
}
运行结果:
run:
Kobi
39
成功构建 (总时间: 0 秒)
3、Object转Map:
package reflect;
import java.beans.BeanInfo;
import java.beans.Introspector;
import java.beans.PropertyDescriptor;
import java.lang.reflect.Method;
import java.util.Map;
import java.util.TreeMap;
public class testObjectToMap {
public static void main(String[] args){
User user = new User();
user.setName("Kobi");
user.setAge(39);
Map map = transBean2Map(user);
System.out.println(map);
}
public static Map transBean2Map(Object obj) {
if (obj == null) {
return null;
}
TreeMap map = new TreeMap<>();
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
// 过滤class属性
if (key.equals("class")) {
continue;
}
// 得到property对应的getter方法
Method getter = property.getReadMethod();
Object value = getter.invoke(obj);
map.put(key, value);
}
} catch (Exception e) {
System.out.println("transBean2Map Error " + e);
}
return map;
}
}
运行结果:
run:
{age=39, name=Kobi}
成功构建 (总时间: 0 秒)
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!