通过反射机制,使用字符串动态拼接成方法名

今天工作,本来在循环中计算得出值后,是加进集合中的,但是发现,数据表的结构是这个样子的:

image_1c2qvedq66d01qtpb7nora1fvam.png-58.2kB

对应的,实体类的属性就是这个样子的:

image_1c2qvcg8b11p0iqv10fv1aie19a69.png-101kB

如果是这样,我就不能往insert方法中传集合了,否则列根本对不上,只能传赋过31天值之后的对象。

那么问题来了,需要在循环中,根据当前遍历的次数,使用字符串动态拼接为方法名,向实体类对象中赋值,使用到了Java中的反射机制。

EnergyDayPlan energyDayPlan=new EnergyDayPlan();    //实体类
Class<?> c = energyDayPlan.getClass();      //获取到该类class
...

for(int i=1;i<=12;i++){
	...
	...
	
	for(int j=1;j<=lastDayOfMonth;j++){
		...

        //字符串拼接成方法名,获取该方法
        Method method=c.getMethod("setD"+j, BigDecimal.class);      
        //invoke代表执行该方法,第一个参数为该对象,第二个参数是该方法需要得到的参数,没有可以为空
        method.invoke(energyDayPlan, avgArr[index]);
    }
}

posted on 2018-01-12 17:54  Yoooshiki  阅读(455)  评论(0编辑  收藏  举报

导航