dest 目标对象
src 源对象
import java.lang.reflect.Field;
import java.util.Map;
public class Main {
public static void copyProperties(Object src, Object dest, Map<String, String> mapping)
throws NoSuchFieldException, IllegalAccessException {
for (Map.Entry<String, String> entry : mapping.entrySet()) {
String k = entry.getKey();
String v = entry.getValue();
if (src instanceof Map) {
Object value = ((Map<?, ?>) src).get(k);
dest.getClass().getMethod("setProperty", String.class, Object.class)
.invoke(dest, v, value);
} else {
Class<?> cls = src.getClass();
Field field = cls.getDeclaredField(k);
field.setAccessible(true);
Object value = field.get(src);
dest.getClass().getMethod("setProperty", String.class, Object.class)
.invoke(dest, v, value);
}
}
}
public static void main(String[] args) throws NoSuchFieldException, IllegalAccessException {
// 使用示例
// 定义src对象和dest对象
Object src = new Object();
Object dest = new Object();
// 定义mapping映射关系
Map<String, String> mapping = Map.of("propertyName1", "destPropertyName1",
"propertyName2", "destPropertyName2");
// 调用copyProperties方法进行属性复制
copyProperties(src, dest, mapping);
}
}