码迷,mamicode.com
首页 > 编程语言 > 详细

Java反射通过getter和setter方法实现类的拷贝

时间:2018-03-28 18:55:30      阅读:347      评论:0      收藏:0      [点我收藏+]

标签:++   tty   反射   ace   int   case   通过   实现   ring   

 

 1     private User copyFieldValues(User userData, User user) {
 2         Field[] fields = user.getClass().getDeclaredFields();
 3         String[] fieldNames = getFieldNames(fields);
 4         for (int i = 0; i < fieldNames.length; i++) {
 5             Object value = getFieldValueByName(fieldNames[i], user);
 6             if (value != null) {
 7                 setFieldValueByName(fieldNames[i], userData, value,fields[i].getType());
 8             }
 9         }
10         return userData;
11     }

 

1     private String[] getFieldNames(Field[] fields) {
2         String[] fieldNames = new String[fields.length];
3         for (int i = 0; i < fields.length; i++) {
4             fieldNames[i] = fields[i].getName();
5         }
6         return fieldNames;
7     }

 

 1     private Object getFieldValueByName(String fieldName, Object o) {
 2         Object value = null;
 3         try {
 4             String getter = "get" + initStr(fieldName);
 5             Method method = o.getClass().getMethod(getter);
 6             value = method.invoke(o);
 7         } catch (Exception e) {
 8             e.printStackTrace();
 9         }
10         return value;
11     }

 

1     private void setFieldValueByName(String fieldName, Object o, Object value, Class<?> type) {
2         try {
3             String setter = "set" + initStr(fieldName);
4             Method method = o.getClass().getMethod(setter, type);
5             method.invoke(o, value);
6         } catch (Exception e) {
7             e.printStackTrace();
8         }
9     }

 

1     private String initStr(String fieldName) {
2         return fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1);
3     }

 

Java反射通过getter和setter方法实现类的拷贝

标签:++   tty   反射   ace   int   case   通过   实现   ring   

原文地址:https://www.cnblogs.com/tyk766564616/p/8665300.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!