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 49db5ddb0..04a9599f0 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 @@ -63,6 +63,9 @@ 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)) { @@ -89,7 +92,7 @@ public class BeanToMapCopier extends AbsCopier { sValue = entry.getValue(); // 获取目标值真实类型并转换源值 - final Type[] typeArguments = TypeUtil.getTypeArguments(this.targetType); + // 尝试转换源值 if(null != typeArguments && typeArguments.length > 1){ //sValue = Convert.convertWithCheck(typeArguments[1], sValue, null, this.copyOptions.ignoreError); sValue = copyOptions.convertField(typeArguments[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 2c6d35db5..ab6d064fe 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 @@ -50,6 +50,8 @@ public class MapToMapCopier extends AbsCopier { @Override public Map copy() { + final Type[] typeArguments = TypeUtil.getTypeArguments(this.targetType); + this.source.forEach((sKey, sValue) -> { if (null == sKey) { return; @@ -74,7 +76,6 @@ public class MapToMapCopier extends AbsCopier { } // 获取目标值真实类型并转换源值 - final Type[] typeArguments = TypeUtil.getTypeArguments(this.targetType); if(null != typeArguments){ sValue = this.copyOptions.convertField(typeArguments[1], sValue); }