java对象合并(针对相同对象 不同属性)

  |   0 评论   |   0 浏览

代码

/**
	 * 该方法是用于相同对象不同属性值的合并,如果两个相同对象中同一属性都有值,
	 * 那么sourceBean中的值会覆盖tagetBean重点的值
	 * @param sourceBean
	 * @param targetBean
	 * @return
	 */
	@SuppressWarnings("unused")
	public static Object combineSydwCore(Object sourceBean, Object targetBean) {
		Class sourceBeanClass = sourceBean.getClass();
		Class targetBeanClass = targetBean.getClass();
 
		Field[] sourceFields = sourceBeanClass.getDeclaredFields();
		Field[] targetFields = sourceBeanClass.getDeclaredFields();
		for (int i = 0; i < sourceFields.length; i++) {
			Field sourceField = sourceFields[i];
			Field targetField = targetFields[i];
			sourceField.setAccessible(true);
			targetField.setAccessible(true);
			//过滤静态属性
			if(Modifier.isStatic(sourceField.getModifiers())){
				continue;
			}
			try {
				if (!(sourceField.get(sourceBean) == null)) {
					targetField.set(targetBean, sourceField.get(sourceBean));
				}
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
		return targetBean;
	}