/** * 两个相同属性的对象赋值 * * @param sourceObj * @param targetObj */public static void entityPropertiesCopy(Object sourceObj, Object targetObj) { if (sourceObj == null || targetObj == null) return; Class targetClass = null; //用java反射机制就可以, 可以做成通用的方法, 只要属性名和类型一样 Field[] sourceFields = null; try { targetClass = targetObj.getClass(); sourceFields = sourceObj.getClass().getDeclaredFields(); } catch (Exception e) { e.printStackTrace(); } String fieldName = ""; Class fieldType = null; for (int i = 0; i < sourceFields.length; i++) { try { fieldName = sourceFields[i].getName(); fieldType = sourceFields[i].getType(); Field targetField = targetClass.getDeclaredField(fieldName); if (targetField != null && targetField.getType().equals(fieldType)) { Method sourceGetter = sourceObj.getClass().getMethod(getGetMethodName(fieldName)); Method targetSetter = targetObj.getClass().getMethod(getSetMethodName(fieldName), new Class []{fieldType}); Object fieldValue = sourceGetter.invoke(sourceObj); if (fieldValue != null) { targetSetter.invoke(targetObj, new Object[]{fieldValue}); } } } catch (NoSuchFieldException e) { } catch (Exception e) { e.printStackTrace(); } }}public static String getGetMethodName(String fieldName) { String result = fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); return "get" + result;}public static String getSetMethodName(String fieldName) { String result = fieldName.substring(0, 1).toUpperCase() + fieldName.substring(1); return "set" + result;}