diff --git a/hutool-core/src/main/java/cn/hutool/v7/core/bean/copier/BeanToMapCopier.java b/hutool-core/src/main/java/cn/hutool/v7/core/bean/copier/BeanToMapCopier.java index 04a9599f0..3060c471c 100644 --- a/hutool-core/src/main/java/cn/hutool/v7/core/bean/copier/BeanToMapCopier.java +++ b/hutool-core/src/main/java/cn/hutool/v7/core/bean/copier/BeanToMapCopier.java @@ -33,10 +33,7 @@ import java.util.Map; @SuppressWarnings("rawtypes") public class BeanToMapCopier extends AbsCopier { - /** - * 目标的Map类型(用于泛型类注入) - */ - private final Type targetType; + private final Type[] targetTypeArguments; /** * 构造 @@ -48,7 +45,7 @@ public class BeanToMapCopier extends AbsCopier { */ public BeanToMapCopier(final Object source, final Map target, final Type targetType, final CopyOptions copyOptions) { super(source, target, copyOptions); - this.targetType = targetType; + targetTypeArguments = TypeUtil.getTypeArguments(targetType); } @SuppressWarnings("unchecked") @@ -63,9 +60,6 @@ public class BeanToMapCopier extends AbsCopier { actualEditable = copyOptions.editable; } - // 提前获取目标值真实类型 - final Type[] typeArguments = TypeUtil.getTypeArguments(this.targetType); - final Map sourcePropDescMap = getBeanDesc(actualEditable).getPropMap(copyOptions.ignoreCase); sourcePropDescMap.forEach((sFieldName, sDesc) -> { if (null == sFieldName || !sDesc.isReadable(copyOptions.transientSupport)) { @@ -93,9 +87,9 @@ public class BeanToMapCopier extends AbsCopier { // 获取目标值真实类型并转换源值 // 尝试转换源值 - if(null != typeArguments && typeArguments.length > 1){ + if(null != targetTypeArguments && targetTypeArguments.length > 1){ //sValue = Convert.convertWithCheck(typeArguments[1], sValue, null, this.copyOptions.ignoreError); - sValue = copyOptions.convertField(typeArguments[1], sValue); + sValue = copyOptions.convertField(targetTypeArguments[1], sValue); } // 目标赋值 diff --git a/hutool-core/src/main/java/cn/hutool/v7/core/bean/copier/MapToMapCopier.java b/hutool-core/src/main/java/cn/hutool/v7/core/bean/copier/MapToMapCopier.java index ab6d064fe..db43915cc 100644 --- a/hutool-core/src/main/java/cn/hutool/v7/core/bean/copier/MapToMapCopier.java +++ b/hutool-core/src/main/java/cn/hutool/v7/core/bean/copier/MapToMapCopier.java @@ -30,10 +30,7 @@ import java.util.Map; @SuppressWarnings({"rawtypes", "unchecked"}) public class MapToMapCopier extends AbsCopier { - /** - * 目标的类型(用于泛型类注入) - */ - private final Type targetType; + private final Type[] targetTypeArguments; /** * 构造 @@ -45,13 +42,11 @@ public class MapToMapCopier extends AbsCopier { */ public MapToMapCopier(final Map source, final Map target, final Type targetType, final CopyOptions copyOptions) { super(source, target, copyOptions); - this.targetType = targetType; + targetTypeArguments = TypeUtil.getTypeArguments(targetType); } @Override public Map copy() { - final Type[] typeArguments = TypeUtil.getTypeArguments(this.targetType); - this.source.forEach((sKey, sValue) -> { if (null == sKey) { return; @@ -76,8 +71,8 @@ public class MapToMapCopier extends AbsCopier { } // 获取目标值真实类型并转换源值 - if(null != typeArguments){ - sValue = this.copyOptions.convertField(typeArguments[1], sValue); + if(null != targetTypeArguments){ + sValue = this.copyOptions.convertField(targetTypeArguments[1], sValue); } // 忽略空值