关于Java实体类反射

记录一下关于实体类反射的一个笔记!

这几天在做一个导入名单的功能,可能感觉做起来没什么难度,但是在实体类赋值的时候感觉代码不是很好看.

修改前代码:

// An highlighted block
	switch (fields.get(i).getTfField()) {
		case "custField1":callList.setCustField1(columnValue[valueIndex]);
			break;
		case "custField2":callList.setCustField2(columnValue[valueIndex]);
			break;
......

因为我的名单列表有的是固定字段,有的是扩展字段,所以我需要把这些扩展字段进行判断赋值.扩展字段有20个,鬼知道当时写了多少行代码.后来自己通过反射封装了一个方法.

改良后代码:

for (int j = 0; j < notDuplicateFields.size(); j++) {
	if (StringUtils.isNotNullOrEmpty(ll.get(i).get(notDuplicateFields.get(j)))
		|| fieldsName.equals(notDuplicateFields.get(j))) {
		Method setReadOnly = callList.getClass().getMethod("set" + camelName(fieldsName.get(notDuplicateFields.get(j))), String.class);
		setReadOnly.invoke(callList, ll.get(i).get(notDuplicateFields.get(j)));
	}
}

deDuplication01:

deDuplication01是我写的一个只取扩展字段的方法,ll是存放数据集合地方比如:

{
	"taskName": "XXX",
	"callList": [{
		"A": "a",
		"B": "b",
		"C": "c"
		.....
	},{
		"A": "a",
		"B": "b",
		"C": "c"
		....
	}]
}

比如说属性"A,B,C"是你的必填属性,其他的都是扩展属性,那你就把扩展字段分离出来形成一个集合,然后循环这个集合.notDuplicateFields就是我取出来的集合.
第一次写文章表达的不是很清楚,不理解欢迎请教,觉得还可以改进的欢迎指教.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值