This commit is contained in:
Looly 2019-09-28 03:27:08 +08:00
parent 596a4f1e57
commit 31e8ef6306
4 changed files with 14 additions and 9 deletions

View File

@ -20,6 +20,8 @@
* 【core】 修复StrBuilder.del无法删除最后一个字符的问题issue#I12R14@Gitee
* 【core】 修复StrBuilder.del无法删除最后一个字符的问题issue#I12R14@Gitee
* 【poi】 修复sax方式读取复用行导致的问题issue#I12O0U@Gitee
* 【core】 修复ClassUtil循环调用问题
* 【core】 修复MapConvert转换Bean为Map类型没有转换成功问题
-------------------------------------------------------------------------------------------------------------

View File

@ -3,6 +3,7 @@ package cn.hutool.core.convert;
import java.io.Serializable;
import java.util.Map;
import cn.hutool.core.lang.Console;
import cn.hutool.core.util.ArrayUtil;
import cn.hutool.core.util.CharUtil;
import cn.hutool.core.util.ClassUtil;
@ -49,7 +50,7 @@ public abstract class AbstractConverter<T> implements Converter<T>, Serializable
if (null == value) {
return defaultValue;
}
if (null == defaultValue || targetType.isInstance(defaultValue)) {
if (targetType.isInstance(value) && false == Map.class.isAssignableFrom(targetType)) {
// 除Map外已经是目标类型不需要转换Map类型涉及参数类型需要单独转换

View File

@ -1,9 +1,5 @@
package cn.hutool.core.convert.impl;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.Map.Entry;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.convert.AbstractConverter;
import cn.hutool.core.convert.ConverterRegistry;
@ -11,6 +7,10 @@ import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.core.util.TypeUtil;
import java.lang.reflect.Type;
import java.util.Map;
import java.util.Map.Entry;
/**
* {@link Map} 转换器
*
@ -52,7 +52,7 @@ public class MapConverter extends AbstractConverter<Map<?, ?>> {
@Override
@SuppressWarnings({ "rawtypes", "unchecked" })
protected Map<?, ?> convertInternal(Object value) {
final Map map;
Map map;
if (value instanceof Map) {
final Type[] typeArguments = TypeUtil.getTypeArguments(value.getClass());
if (null != typeArguments //
@ -66,6 +66,8 @@ public class MapConverter extends AbstractConverter<Map<?, ?>> {
convertMapToMap((Map) value, map);
} else if (BeanUtil.isBean(value.getClass())) {
map = BeanUtil.beanToMap(value);
// 二次转换转换键值类型
map = convertInternal(map);
} else {
throw new UnsupportedOperationException(StrUtil.format("Unsupport toMap value type: {}", value.getClass().getName()));
}

View File

@ -82,7 +82,7 @@ public class MapUtil {
* @return HashMap对象
*/
public static <K, V> HashMap<K, V> newHashMap() {
return new HashMap<K, V>();
return new HashMap<>();
}
/**
@ -400,7 +400,7 @@ public class MapUtil {
return resultList;
}
boolean isEnd = true;// 是否结束标准是元素列表已耗尽
boolean isEnd;// 是否结束标准是元素列表已耗尽
int index = 0;// 值索引
Map<K, V> map;
do {
@ -736,7 +736,7 @@ public class MapUtil {
* @since 4.5.4
*/
public static <K, V> MapWrapper<K, V> wrap(Map<K, V> map) {
return new MapWrapper<K, V>(map);
return new MapWrapper<>(map);
}
// ----------------------------------------------------------------------------------------------- builder