BeanUtils.java
上传用户:hensond
上传日期:2021-12-27
资源大小:817k
文件大小:2k
源码类别:

软件工程

开发平台:

Java

  1. package com.company.section7;
  2. import java.beans.BeanInfo;
  3. import java.beans.Introspector;
  4. import java.beans.PropertyDescriptor;
  5. import java.lang.reflect.Method;
  6. import java.util.HashMap;
  7. /**
  8.  * @author cbf4Life cbf4life@126.com
  9.  * I'm glad to share my knowledge with you all.
  10.  */
  11. public class BeanUtils {
  12. //把bean的所有属性及数值放入到Hashmap中
  13. public static HashMap<String,Object> backupProp(Object bean){
  14. HashMap<String,Object> result = new HashMap<String,Object>();
  15. try {
  16. //获得Bean描述
  17. BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass());
  18. //获得属性描述
  19. PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors();
  20. //遍历所有属性
  21. for(PropertyDescriptor des:descriptors){
  22. //属性名称
  23. String fieldName = des.getName();
  24. //读取属性的方法
  25. Method getter = des.getReadMethod();
  26. //读取属性值
  27. Object fieldValue = getter.invoke(bean, new Object[]{});
  28. if(!fieldName.equalsIgnoreCase("class")){
  29. result.put(fieldName, fieldValue);
  30. }
  31. }
  32. } catch (Exception e) {
  33. //异常处理
  34. }
  35. return result;
  36. }
  37. //把HashMap的值返回到bean中
  38. public static void restoreProp(Object bean,HashMap<String,Object> propMap){
  39. try {
  40. //获得Bean描述
  41. BeanInfo beanInfo = Introspector.getBeanInfo(bean.getClass());
  42. //获得属性描述
  43. PropertyDescriptor[] descriptors = beanInfo.getPropertyDescriptors();
  44. //遍历所有属性
  45. for(PropertyDescriptor des:descriptors){
  46. //属性名称
  47. String fieldName = des.getName();
  48. //如果有这个属性
  49. if(propMap.containsKey(fieldName)){
  50. //写属性的方法
  51. Method setter = des.getWriteMethod();
  52. setter.invoke(bean, new Object[]{propMap.get(fieldName)});
  53. }
  54. }
  55. } catch (Exception e) {
  56. //异常处理
  57. System.out.println("shit");
  58. e.printStackTrace();
  59. }
  60. }
  61. }