java通过反射机制为实例添加数据

package com.java;

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


/**
 * 具体操作
 * @author Bruce
 *
 */
public class SetDataForExcel {
    public static void main(String[] args) {
        String type = "com.java.Student" ; //xml中对应的类名称
        Map<String, Object> excelMap = new HashMap<String, Object>(); //excel中上传的一条数据
        excelMap.put("name", "v1");
        excelMap.put("age", 12);
        
        List<Object> objects = new SetDataForExcel().getObject(type, excelMap);
        if(!objects.isEmpty()){
            System.out.println("数据添加成功");
        } else {
            System.out.println("数据添加失败");
        }
    }
    
    /**
     * 获取对象
     * @param classType
     * @return
     */
    public List<Object> getObject(String classType, Map<String, Object> excelMap){
        List<Object> objects = new ArrayList<Object>() ; //创建保存实体类的集合
        Object object = null, valObjects = null ;
        try {
            object = Class.forName(classType).newInstance(); //获取实体类
            
            Field[] fields = object.getClass().getFields(); //获取实例中的属性
            for(int i = 0, len = fields.length; i < len; i++){
                valObjects = Class.forName(classType).newInstance();
                if(fields[i].getName().equals("name"))
                    fields[i].set(valObjects, excelMap.get("name"));
                else if(fields[i].getName().equals("age")){
                    fields[i].set(valObjects, excelMap.get("age"));
                }
                objects.add(valObjects);
            }
        } catch (Exception e) {
            System.out.println("使用反射机制为对象赋值的时候出错了! SetDataForExcel ");
            e.printStackTrace();
        }
        return objects ;
    }
    
}




//========================文件2

package com.java;

/**
 * 模拟你的实体类
 * @author Bruce
 *
 */
public class Student {
    
    public String name ; //如果定义为private私有的,需要用到暴力反射
    public int age ;
    
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值