beanField.setSetExecutor(setExecutor);
}
// 获取新的srcRef
// 获取get结果
ValueProcessInvocation invocation = new ValueProcessInvocation(getExecutor, setExecutor, valueContext,
param.getProcesses());
Object srcRef = invocation.getInitialValue();
// 设置下srcClass
Class getResultClass = (srcRef != null) ? srcRef.getClass() : null;
// 设置下srcClass
if (getExecutor != null && beanField.getSrcField().getClazz() == null) {
beanField.getSrcField().setClazz(
Uberspector.getInstance().getGetClass(getExecutor,
param.getSrcRef().getClass(),
getResultClass));
}
if (setExecutor != null && beanField.getTargetField().getClazz() == null) {
beanField.getTargetField().setClazz(
Uberspector.getInstance().getSetClass(setExecutor,
param.getTargetRef().getClass(),
getResultClass));
if (setExecutor instanceof MapSetExecutor) {
beanField.getTargetField().setClazz(HashMap.class);// 注意这里强制传递为HashMap.class
}
}
// 执行set,反射构造一个子Model
// 如果嵌套对象为null,则直接略过该对象处理,目标对象也为null,此时srcRef可能为null
Object value = invocation.proceed(srcRef); // 在目标节点对象上,创建一个子节点
if (srcRef == null && value == null) {
return; // 如果为null,则不做递归处理
}
if (beanField.getSrcField().getClazz() == null || beanField.getTargetField().getClazz() == null) {