From 3d3cadd1bc7d8802059eb6a4261a5f5eccf2a3ff Mon Sep 17 00:00:00 2001 From: Looly Date: Fri, 23 May 2025 21:54:13 +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 --- .../v7/core/bean/copier/BeanToMapCopier.java | 14 ++++---------- .../hutool/v7/core/bean/copier/MapToMapCopier.java | 13 ++++--------- 2 files changed, 8 insertions(+), 19 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 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); } // 忽略空值