java实现map和object互转的三种方法

/**
* 使用org.apache.commons.beanutils进行转换
*/
class A {

public static Object mapToObject(Map<string object=""> map, Class<?> beanClass) throws Exception {
if (map == null)
return null;

Object obj = beanClass.newInstance();

org.apache.commons.beanutils.BeanUtils.populate(obj, map);

return obj;
}

public static Map<?, ?> objectToMap(Object obj) {
if(obj == null)
return null;

return new org.apache.commons.beanutils.BeanMap(obj);
}

}

/**
* 使用Introspector进行转换
*/
class B {

public static Object mapToObject(Map<string object=""> map, Class<?> beanClass) throws Exception {
if (map == null)
return null;

Object obj = beanClass.newInstance();

BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
Method setter = property.getWriteMethod();
setter.invoke(obj, map.get(property.getName()));
}

return obj;
}

public static Map<string object=""> objectToMap(Object obj) throws Exception {
if(obj == null)
return null;

Map<string object=""> map = new HashMap<string object="">();

BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (key.compareToIgnoreCase("class") == 0) {
continue;
}

Method getter = property.getReadMethod();
Object value = getter.invoke(obj);
map.put(key, value);
}

return map;
}

}

/**
* 使用reflect进行转换
*/
class C {

public static Object mapToObject(Map<string object=""> map, Class<?> beanClass) throws Exception {
if (map == null)
return null;

Object obj = beanClass.newInstance();

Field[] fields = obj.getClass().getDeclaredFields();
for (Field field : fields) {
int mod = field.getModifiers();
if(Modifier.isStatic(mod) || Modifier.isFinal(mod)){
continue;
}

field.setAccessible(true);
field.set(obj, map.get(field.getName()));
}

return obj;
}

public static Map<string object=""> objectToMap(Object obj) throws Exception {
if(obj == null){
return null;
}

Map<string object=""> map = new HashMap<string object="">();

Field[] declaredFields = obj.getClass().getDeclaredFields();
for (Field field : declaredFields) {
field.setAccessible(true);
map.put(field.getName(), field.get(obj));
}

return map;
}
}

时间: 2024-10-13 20:24:30

java实现map和object互转的三种方法的相关文章

Java/JSP获得客户端网卡MAC地址的三种方法解析

java/jsp获得客户端(IE)网卡MAC地址的方法大概有三种. 1.通过命令方式,在客户端执行Ipconfig 等等.(java/jsp) 2.通过ActiveX的方法.(jsp) 3.通过向137的端口发送查询指令的方法.(java/jsp) 简介: 第一种方法,在真正用到时候不知道为什么获得mac地址的指令阻塞了,不往下继续执行.而且速度是这三种方法中最慢的一种. 代码如下: String sip=""; String smac=""; sip = requ

java将doc文件转换为pdf文件的三种方法

http://feifei.im/archives/93 —————————————————————————————————————————————— 项目要用到doc转pdf的功能,一番google之后总结出了三种方法(免费方案),于是一一试了一下,做个总结记录,下次要用直接查,省的忘了…… 方法1.poi读取doc + itext生成pdf (实现最方便,效果最差,跨平台) 方法2.jodconverter + openOffice (一般格式实现效果还行,复杂格式容易有错位,跨平台) 方法

java中判断字符串是否为数字的三种方法

//    1用JAVA自带的函数    public static boolean isNumericFirst(String str){      for (int i = str.length();--i>=0;){          if (!Character.isDigit(str.charAt(i))){        return false;       }      }      return true;     } //2用正则表达式    public static bo

Java小案例——交换两个数值的三种方法

要求: 互换两个数的值 方法一:借助第三方变量 /** * 借助第三方变量对两个值进行互换 * @author Administration * */ public class ExchangeValue { public static void main(String[] args) { int a = 10; int b = 15; System.out.println("a的值:"+a+",\tb的值:"+b); System.out.println(&quo

javaBean与Map&lt;String,Object&gt;互转

1. 为什么要实现javaBean与Map<String,Object>相互转换? 用过spring的都知道spring的MVC框架中有一个BaseCommandController对象,利用这个对象我们就可以很方便的将从客户端传递过来的参数封装到一个JavaBean对象中去,而不需要我们request.getParameter("name");bean.setName(name);了,从而也简化了不少的工作.如果大家用过BeanUtils.populate的话,就知道,这

Java Class类以及获取Class实例的三种方式

T - 由此 Class 对象建模的类的类型.例如,String.class 的类型是Class<String>.如果将被建模的类未知,则使用Class<?>. [java] view plain copy print? public final class Class<T> extends Object  implements java.io.Serializable, java.lang.reflect.GenericDeclaration, java.lang.r

java对象转换String类型的三种方法

在很多情况下我们都需要将一个对象转换为String类型.一般来说有三种方法可以实现:Object.toString().(String)Object.String.valueOf(Object).下面对这三种方法一一分析 一.采用Object.toString()toString方法是java.lang.Object对象的一个public方法.在java中任何对象都会继承Object对象,所以一般来说任何对象都可以调用toString这个方法.这是采用该种方法时,常派生类会覆盖Object里的t

【转】Java中字符串中子串的查找共有四种方法(indexof())

原文网址:http://wfly2004.blog.163.com/blog/static/1176427201032692927349/ Java中字符串中子串的查找共有四种方法,如下:1.int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引. 2.int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引. 3.int lastIndexOf(String st

JAVA之线程同步的三种方法

最近接触到一个图片加载的项目,其中有声明到的线程池等资源需要在系统中线程共享,所以就去研究了一下线程同步的知识,总结了三种常用的线程同步的方法,特来与大家分享一下.这三种方法分别是:synchronized代码段.synchronized修饰方法/类.ThreadLocal本地线程变量. 我们通过一个例子来表现这三种方法:一张银行卡里面有300块钱,15个线程从这张银行卡中取钱,每个线程取一次且每次取20块钱:当当前余额不足100元时,则向账户中汇款20元.三种方法每种方法都有5个线程.我们预期