All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.icodegarden.commons.lang.util.BeanUtils Maven / Gradle / Ivy

//package io.github.icodegarden.commons.lang.util;
//
//import java.lang.reflect.Field;
//import java.util.Arrays;
//import java.util.Map;
//import java.util.stream.Collectors;
//
///**
// * 
// * @author Fangfang.Xu
// *
// */
//public class BeanUtils {
//
//	/**
//	 * copy本类和父类递归的字段 FIXME 有final字段赋值问题
//	 * @param source
//	 * @param target
//	 */
//	public static void copyProperties(Object source, Object target) {
//		copyProperties(source, source.getClass(), target, target.getClass());
//	}
//
//	private static void copyProperties(Object source, Class sourceClass, Object target, Class targetClass) {
//		if (sourceClass == Object.class || targetClass == Object.class) {
//			return;
//		}
//
//		Field[] sourceFields = sourceClass.getDeclaredFields();
//		Field[] targetFields = targetClass.getDeclaredFields();
//
//		Map targetFieldsMap = Arrays.asList(targetFields).stream()
//				.collect(Collectors.toMap(Field::getName, f -> f));
//
//		for (Field sourceField : sourceFields) {
//			Field targetField = targetFieldsMap.get(sourceField.getName());
//			if (targetField != null) {
//				boolean sourceFieldAccessible = sourceField.isAccessible();
//				boolean targetFieldAccessible = targetField.isAccessible();
//				if (!sourceFieldAccessible) {
//					sourceField.setAccessible(true);
//				}
//				if (!targetFieldAccessible) {
//					targetField.setAccessible(true);
//				}
//				try {
//					targetField.set(target, sourceField.get(source));
//				} catch (IllegalAccessException e) {
//					throw new IllegalStateException(e);
//				}
//
//				if (!sourceFieldAccessible) {
//					sourceField.setAccessible(sourceFieldAccessible);
//				}
//				if (!targetFieldAccessible) {
//					targetField.setAccessible(targetFieldAccessible);
//				}
//			}
//		}
//
//		copyProperties(source, sourceClass.getSuperclass(), target, targetClass.getSuperclass());
//	}
//}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy