From 596cdc2984e23cc06dbbf9e7035d2db290e1c73c Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 23 May 2025 21:47:29 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96XXXToMapCopier=E7=9A=84?= =?UTF-8?q?=E9=83=A8=E5=88=86=E6=80=A7=E8=83=BD=EF=BC=88pr#1345@Gitee?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/cn/hutool/v7/core/bean/copier/BeanToMapCopier.java | 5 ++++- .../java/cn/hutool/v7/core/bean/copier/MapToMapCopier.java | 3 ++- 2 files changed, 6 insertions(+), 2 deletions(-) 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); }