Java小例子:根据Map对象的内容创建JavaBean2011-06-10 csdn博客 YidingHeJava 提供 java.beans.Introspector 类,帮助我们分析 JavaBean 类当中 有哪些属性,通过它可以方便的对 JavaBean 对象属性进行取值和赋值操作。下 面是一个例子,根据 Map 对象中的内容创建 JavaBean 对象。
01.import java.beans.BeanInfo;02.import java.beans.IntrospectionException;03.import java.beans.Introspector;04.import java.beans.PropertyDescriptor;05.import java.util.HashMap;06.import java.util.Map;07.import java.lang.reflect.InvocationTargetException;08.09.public class MapToBean {10.11.public static void main(String[] args) throws Exception {12.Map<Object, Object> map = new HashMap<Object, Object>();13.map.put("name", "张三");14.map.put("age", 30);15.Person p = convertMap(Person.class, map);16.System.out.println(p.getName() + ", " + p.getAge());17.}18.19./**20. * 将一个 Map 对象转化为一个 JavaBean21. *22. * @param type 要转化的类型23. * @param map包含属性值的 map24. *25. * @return 转化出来的 JavaBean 对象26. *27. * @throws IntrospectionException如果分析类属性失败28. * @throws IllegalAccessException如果实例化 JavaBean 失败29. * @throws InstantiationException如果实例化 JavaBean 失败30. * @throws InvocationTargetException 如果调用属性的 setter 方法失败31. */32.private static <T> T convertMap(Class<T> type, Map<Object, Object> map)33.throws IntrospectionException, IllegalAccessException,34.InstantiationException, InvocationTargetException {35.BeanInfo beanInfo = Introspector.getBeanInfo(type); // 获取类属性36.T t = type.newInstance(); // 创建 JavaBean 对象37.38.// 给 JavaBean 对象的属性赋值39.for (PropertyDescriptor descriptor : beanInfo.getPropertyDescriptors()) {40.String propertyName = descriptor.getName();41.if (map.containsKey(propertyName)) {42.// 下面一句可以 try 起来,这样当一个属性赋值失败的时候就不会影响其他属性赋值。43.descriptor.getWriteMethod().invoke(t, map.get(propertyName));44.}45.}46.return t;47.}48.}49.50.class Person {51.52.private String name;53.54.private int age;55.56.public String getName() {57.return name;58.}59.60.public void setName(String name) {61.this.name = name;62.}63.64.public int getAge() {65.return age;66.}67.68.public void setAge(int age) {69.this.age = age;70.}71.}