Java用Field实现对象的拷贝,遍历对象字段、取值赋值
来源:互联网 发布:最新彩票开奖网站源码 编辑:程序博客网 时间:2024/06/18 05:13
话不多说,上代码,小人拙见,不足之处望见谅!
public String 方法名(参数) throws NoSuchMethodException, InvocationTargetException, IllegalAccessException, NoSuchFieldException {
List list=XXX;
Model2 model2;
for (Model1 model1: list) {
model2= new Model2();
Field[] field1 = model1.getClass().getDeclaredFields();
Field[] field2 = model2.getClass().getDeclaredFields();
//循环遍历获取model1和model2中相同的字段
for (int i = 0; i < field1.length; i++) {
for (int j = 0; j < field2.length; j++) {
//设置可以获取私有属性
field1[i].setAccessible(true);
field2[j].setAccessible(true); if(field1[i].getName().equals(field2[j].getName())) {
String name1 = field1[i].getName();
String name2 = field2[j].getName();
//将首字母大写
name1 = name1.replaceFirst(name1.substring(0, 1), name1.substring(0, 1).toUpperCase());
String type = field1[i].getGenericType().toString();
Method m1 = model1.getClass().getMethod(“get” + name1, null);
//对不同参数类型进行分别处理
if (type.equals(“class java.lang.String”)) {
// 如果type是类类型,则前面包含”class “,后面跟类名
String value1 = (String) m1.invoke(model1);
Field field = model2.getClass().getDeclaredField(name2);
field.setAccessible(true);
field.set(model2, value1);
}
if (type.equals(“class java.lang.Integer”)) {
Integer value1 = (Integer) m1.invoke(model1);
Field field = model2.getClass().getDeclaredField(name2);
field.setAccessible(true);
field.set(model2, value1);
}
if (type.equals(“class java.lang.Double”)) {
Double value1 = (Double) m1.invoke(model1)
Field field = model2.getClass().getDeclaredField(name2);
field.setAccessible(true);
field.set(model2, value1);
}
if (type.equals(“class java.util.Date”)) {
Date value1 = (Date) m1.invoke(model1);
Field field = model2.getClass().getDeclaredField(name2);
field.setAccessible(true);
field.set(model2, value1);
}
}
}
}
}
}
一定要抛异常。
同类实现方法可以用BeanUtils.copyProperties(newObject,oldObject),实现对象的拷贝(后付前)。
- Java用Field实现对象的拷贝,遍历对象字段、取值赋值
- Javascript对象取值赋值
- for循环遍历对象取里面的某个字段的值
- Field 的使用,遍历对象的属性
- C++对象的拷贝与赋值操作
- C++对象的拷贝与赋值操作
- C++对象的拷贝与赋值操作
- C++对象的拷贝与赋值操作
- C++对象的拷贝与赋值操作
- C++对象的拷贝与赋值操作
- java对象的拷贝
- Java对象的拷贝
- 【Java】对象的拷贝
- Java反射机制实现对象属性值的拷贝
- Sencha Touch2模型对象的使用(赋值,取值)
- 对象的赋值、对象的复制(拷贝构造函数)
- python的对象赋值、浅拷贝和深拷贝
- 遍历DTHML 中的对象 遍历取值
- 集成微信支付
- 使用caffe的python接口进行特征提取和人脸验证
- github入门到上传本地项目
- Eclipse导入导出快捷键
- java 反射
- Java用Field实现对象的拷贝,遍历对象字段、取值赋值
- ReactNative Animated动画详解
- JAVA操作符学习过程(一)
- Java中动态加载jar文件和class文件
- 重写equals和hashCode
- Stk相关
- 在kernel里添加一个i2c外围设备
- matlab图像处理之二值图像内外边界跟踪
- Android中shape的用法