add 新增 BeanCopyUtils#mapToMap 方法

This commit is contained in:
疯狂的狮子li 2023-01-12 16:51:46 +08:00
parent c79c3ee5b6
commit 10f88f5458

View File

@ -12,6 +12,7 @@ import org.springframework.cglib.beans.BeanCopier;
import org.springframework.cglib.beans.BeanMap; import org.springframework.cglib.beans.BeanMap;
import org.springframework.cglib.core.Converter; import org.springframework.cglib.core.Converter;
import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
@ -135,6 +136,25 @@ public class BeanCopyUtils {
return bean; return bean;
} }
/**
* map拷贝到map
*
* @param map 数据来源
* @param clazz 返回的对象类型
* @return map对象
*/
public static <T, V> Map<String, V> mapToMap(Map<String, T> map, Class<V> clazz) {
if (MapUtil.isEmpty(map)) {
return null;
}
if (ObjectUtil.isNull(clazz)) {
return null;
}
Map<String, V> copyMap = new LinkedHashMap<>(map.size());
map.forEach((k, v) -> copyMap.put(k, copy(v, clazz)));
return copyMap;
}
/** /**
* BeanCopier属性缓存<br> * BeanCopier属性缓存<br>
* 缓存用于防止多次反射造成的性能问题 * 缓存用于防止多次反射造成的性能问题
@ -174,7 +194,7 @@ public class BeanCopyUtils {
private String genKey(Class<?> srcClass, Class<?> targetClass, Converter converter) { private String genKey(Class<?> srcClass, Class<?> targetClass, Converter converter) {
final StringBuilder key = StrUtil.builder() final StringBuilder key = StrUtil.builder()
.append(srcClass.getName()).append('#').append(targetClass.getName()); .append(srcClass.getName()).append('#').append(targetClass.getName());
if(null != converter){ if (null != converter) {
key.append('#').append(converter.getClass().getName()); key.append('#').append(converter.getClass().getName());
} }
return key.toString(); return key.toString();