当前位置 : 主页 > 编程语言 > c++ >

嵌套 BeanUtils 用于Bean中包含其他Bean的封装

来源:互联网 收集:自由互联 发布时间:2021-06-30
NestedBeanUtils.java package util;import java.lang.reflect.Field;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;import java.util.Map;/** * 嵌套的BeanUtils * * @author 林万程 * @version 2017.10.2.2.30
NestedBeanUtils.java
package util;

import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

/**
 * 嵌套的BeanUtils
 * 
 * @author 林万程
 * @version 2017.10.2.2.30
 */
public class NestedBeanUtils {

    /**
     * 获取单个Bean
     * @param clazz 需要返回的类名.class
     * @param map 数据源Map
     */
    public static 
 
   T get(Class
  
    clazz, Map
   
     map) throws Exception { T object = clazz.newInstance(); Field[] Fields = clazz.getDeclaredFields(); for (Field field : Fields) { String fieldName = field.getName(); Object value = map.get(fieldName); // 如果找不到就【递归】找,封装到子类 if (value == null) { value = get(field.getType(), map); } String mothodName = "set" + fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); Method method = clazz.getDeclaredMethod(mothodName, field.getType()); method.invoke(object, value); } return object; } /** * 获取多个Bean * @param clazz 需要返回的类名.class * @param list 数据源Map的List */ public static 
    
      List
     
       list(Class
      
        clazz, List
       
        > list) throws Exception { List
        
          rows = new ArrayList
         
          (); for (Map
          
            map : list) { rows.add(get(clazz, map)); } return rows; } }
          
         
        
       
      
     
    
   
  
 
网友评论