From a34637f0713e993e6721dd37e3244433eb7ec588 Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 23 May 2025 21:54:05 +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 --- .../hutool/core/bean/copier/BeanToMapCopier.java | 15 +++++---------- .../hutool/core/bean/copier/MapToMapCopier.java | 16 +++++----------- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/copier/BeanToMapCopier.java b/hutool-core/src/main/java/cn/hutool/core/bean/copier/BeanToMapCopier.java index b81710157..e487e7566 100755 --- a/hutool-core/src/main/java/cn/hutool/core/bean/copier/BeanToMapCopier.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/copier/BeanToMapCopier.java @@ -16,10 +16,8 @@ import java.util.Map; @SuppressWarnings("rawtypes") public class BeanToMapCopier extends AbsCopier { - /** - * 目标的Map类型(用于泛型类注入) - */ - private final Type targetType; + // 提前获取目标值真实类型 + private final Type[] targetTypeArguments; /** * 构造 @@ -31,7 +29,7 @@ public class BeanToMapCopier extends AbsCopier { */ public BeanToMapCopier(Object source, Map target, Type targetType, CopyOptions copyOptions) { super(source, target, copyOptions); - this.targetType = targetType; + this.targetTypeArguments = TypeUtil.getTypeArguments(targetType); } @Override @@ -44,9 +42,6 @@ public class BeanToMapCopier extends AbsCopier { actualEditable = copyOptions.editable; } - // 提前获取目标值真实类型 - final Type[] earlyDetectTypeArguments = TypeUtil.getTypeArguments(this.targetType); - final Map sourcePropDescMap = BeanUtil.getBeanDesc(actualEditable).getPropMap(copyOptions.ignoreCase); sourcePropDescMap.forEach((sFieldName, sDesc) -> { if (null == sFieldName || false == sDesc.isReadable(copyOptions.transientSupport)) { @@ -72,9 +67,9 @@ public class BeanToMapCopier extends AbsCopier { } // 尝试转换源值 - if(null != earlyDetectTypeArguments && earlyDetectTypeArguments.length > 1){ + if(null != targetTypeArguments && targetTypeArguments.length > 1){ //sValue = Convert.convertWithCheck(typeArguments[1], sValue, null, this.copyOptions.ignoreError); - sValue = this.copyOptions.convertField(earlyDetectTypeArguments[1], sValue); + sValue = this.copyOptions.convertField(targetTypeArguments[1], sValue); } // 自定义值 diff --git a/hutool-core/src/main/java/cn/hutool/core/bean/copier/MapToMapCopier.java b/hutool-core/src/main/java/cn/hutool/core/bean/copier/MapToMapCopier.java index 15ab71e61..017566147 100755 --- a/hutool-core/src/main/java/cn/hutool/core/bean/copier/MapToMapCopier.java +++ b/hutool-core/src/main/java/cn/hutool/core/bean/copier/MapToMapCopier.java @@ -13,10 +13,8 @@ import java.util.Map; @SuppressWarnings({"rawtypes", "unchecked"}) public class MapToMapCopier extends AbsCopier { - /** - * 目标的类型(用于泛型类注入) - */ - private final Type targetType; + // 提前获取目标值真实类型 + private final Type[] targetTypeArguments; /** * 构造 @@ -28,15 +26,11 @@ public class MapToMapCopier extends AbsCopier { */ public MapToMapCopier(Map source, Map target, Type targetType, CopyOptions copyOptions) { super(source, target, copyOptions); - this.targetType = targetType; + targetTypeArguments = TypeUtil.getTypeArguments(targetType); } @Override public Map copy() { - - // 提前获取目标值真实类型 - final Type[] earlyDetectTypeArguments = TypeUtil.getTypeArguments(this.targetType); - this.source.forEach((sKey, sValue) -> { if (null == sKey) { return; @@ -62,9 +56,9 @@ public class MapToMapCopier extends AbsCopier { } // 尝试转换源值 - if (null != earlyDetectTypeArguments) { + if (null != targetTypeArguments) { //sValue = Convert.convertWithCheck(typeArguments[1], sValue, null, this.copyOptions.ignoreError); - sValue = this.copyOptions.convertField(earlyDetectTypeArguments[1], sValue); + sValue = this.copyOptions.convertField(targetTypeArguments[1], sValue); } // 自定义值