本篇文章给大家分享的是有关java项目中Map与Object如何实现相互转换,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
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<string,object> map = new HashMap<string,object>();
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> T transferMapToUser(Map<string,object> map,Class<t> 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> T transfer(Map<string,object> 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<string, object=""> map = transBean2Map(user);
System.out.println(map);
}
public static Map<string, object=""> transBean2Map(Object obj) {
if (obj == null) {
return null;
}
TreeMap<string, object=""> 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 秒)
以上就是java项目中Map与Object如何实现相互转换,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注亿速云行业资讯频道。
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。