您的位置:首页 > 编程语言 > Java开发

利用反射java对象赋值,省略重复get,set赋值.

2018-03-07 15:08 330 查看
package zgzt.jfzz.base.domain.msmember;

import com.alibaba.fastjson.util.DeserializeBeanInfo;
import com.alibaba.fastjson.util.FieldInfo;
import com.alibaba.fastjson.util.TypeUtils;

import java.lang.reflect.Type;
import java.util.List;

/**
* Created by admin on 2018/3/7.
*/
public class Copyer {
public static <B, S extends B>  void Copy(B bo, S so) throws IllegalAccessException {

try {
Class bc = bo.getClass();
if (bo == null || so == null) {
return;
}
DeserializeBeanInfo deserializeBeanInfo = DeserializeBeanInfo.computeSetters(so.getClass(), (Type) so.getClass());
List<FieldInfo> getters = TypeUtils.computeGetters(bo.getClass(), null);

List<FieldInfo> setters = deserializeBeanInfo.getFieldList();
Object v;
FieldInfo getterfield;
FieldInfo setterfidld;

for (int j = 0; j < getters.size(); j++) {

getterfield=getters.get(j);
for (int i = 0; i < setters.size(); i++) {
setterfidld=setters.get(i);
System.out.println(setterfidld.getName());
System.out.println(getterfield.getName());

if (setterfidld.getName().compareTo(getterfield.getName()) == 0) {
v = getterfield.getMethod().invoke(bo);
setterfidld.getMethod().invoke(so,v);
break;
}

}
}
} catch (Exception ex) {
System.out.println(ex.toString());
}
}
}

原文出处:http://www.cnblogs.com/fgq841103/p/5849243.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐