diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/convert/CompositeConverter.java b/hutool-core/src/main/java/org/dromara/hutool/core/convert/CompositeConverter.java index cc33061a9..32f553b61 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/convert/CompositeConverter.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/convert/CompositeConverter.java @@ -22,6 +22,7 @@ import org.dromara.hutool.core.util.ObjUtil; import java.lang.reflect.Type; import java.util.Collection; +import java.util.Date; import java.util.Map; /** @@ -181,6 +182,11 @@ public class CompositeConverter extends RegisterConverter { return null; } + // 日期、java.sql中的日期以及自定义日期统一处理 + if(Date.class.isAssignableFrom(rowType)){ + return DateConverter.INSTANCE.convert(type, value, defaultValue); + } + // 集合转换(含有泛型参数,不可以默认强转) if (Collection.class.isAssignableFrom(rowType)) { return (T) CollectionConverter.INSTANCE.convert(type, value, (Collection) defaultValue); diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/convert/RegisterConverter.java b/hutool-core/src/main/java/org/dromara/hutool/core/convert/RegisterConverter.java index 8d36e924e..bfe41afa6 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/convert/RegisterConverter.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/convert/RegisterConverter.java @@ -176,13 +176,6 @@ public class RegisterConverter implements Converter, Serializable { // 日期时间 defaultConverterMap.put(Calendar.class, new CalendarConverter()); defaultConverterMap.put(XMLGregorianCalendar.class, new XMLGregorianCalendarConverter()); - defaultConverterMap.put(java.util.Date.class, DateConverter.INSTANCE); - defaultConverterMap.put(DateTime.class, DateConverter.INSTANCE); - - // 日期时间 java.sql - defaultConverterMap.put(java.sql.Date.class, DateConverter.INSTANCE); - defaultConverterMap.put(java.sql.Time.class, DateConverter.INSTANCE); - defaultConverterMap.put(java.sql.Timestamp.class, DateConverter.INSTANCE); // 日期时间 JDK8+(since 5.0.0) defaultConverterMap.put(TemporalAccessor.class, TemporalAccessorConverter.INSTANCE); diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/convert/impl/DateConverter.java b/hutool-core/src/main/java/org/dromara/hutool/core/convert/impl/DateConverter.java index 8d419ced0..9dda76030 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/convert/impl/DateConverter.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/convert/impl/DateConverter.java @@ -16,7 +16,6 @@ import org.dromara.hutool.core.convert.AbstractConverter; import org.dromara.hutool.core.convert.ConvertException; import org.dromara.hutool.core.date.DateTime; import org.dromara.hutool.core.date.DateUtil; -import org.dromara.hutool.core.date.SqlDateUtil; import org.dromara.hutool.core.text.StrUtil; import java.time.temporal.TemporalAccessor; @@ -113,17 +112,8 @@ public class DateConverter extends AbstractConverter { if (DateTime.class == targetClass) { return date; } - if (java.sql.Date.class == targetClass) { - return SqlDateUtil.date(date); - } - if (java.sql.Time.class == targetClass) { - return SqlDateUtil.time(date); - } - if (java.sql.Timestamp.class == targetClass) { - return SqlDateUtil.timestamp(date); - } - throw new UnsupportedOperationException(StrUtil.format("Unsupported target Date type: {}", targetClass.getName())); + return wrap(targetClass, date.getTime()); } /** diff --git a/hutool-core/src/main/java/org/dromara/hutool/core/map/MapUtil.java b/hutool-core/src/main/java/org/dromara/hutool/core/map/MapUtil.java index bd732887a..a4540bb05 100644 --- a/hutool-core/src/main/java/org/dromara/hutool/core/map/MapUtil.java +++ b/hutool-core/src/main/java/org/dromara/hutool/core/map/MapUtil.java @@ -255,7 +255,12 @@ public class MapUtil extends MapGetUtil { public static Map createMap(final Class mapType, final Supplier> defaultMap) { Map result = null; if (null != mapType && !mapType.isAssignableFrom(AbstractMap.class)) { - result = (Map) ConstructorUtil.newInstanceIfPossible(mapType); + try{ + result = (Map) ConstructorUtil.newInstanceIfPossible(mapType); + } catch (final Exception ignore){ + // JDK9+抛出java.lang.reflect.InaccessibleObjectException + // 跳过 + } } if(null == result){ diff --git a/hutool-json/src/main/java/org/dromara/hutool/json/convert/JSONConverter.java b/hutool-json/src/main/java/org/dromara/hutool/json/convert/JSONConverter.java index ca407f0af..dea5923d7 100644 --- a/hutool-json/src/main/java/org/dromara/hutool/json/convert/JSONConverter.java +++ b/hutool-json/src/main/java/org/dromara/hutool/json/convert/JSONConverter.java @@ -255,6 +255,11 @@ public class JSONConverter implements Converter { return null; } + // 日期、java.sql中的日期以及自定义日期统一处理 + if(Date.class.isAssignableFrom(rowType)){ + return (T) DateConverter.INSTANCE.convert(type, value); + } + // 集合转换(含有泛型参数,不可以默认强转) if (Collection.class.isAssignableFrom(rowType)) { return (T) CollectionConverter.INSTANCE.convert(type, value);