diff --git a/src/org/redkale/util/Creator.java b/src/org/redkale/util/Creator.java index 77b260f68..7ce6cea05 100644 --- a/src/org/redkale/util/Creator.java +++ b/src/org/redkale/util/Creator.java @@ -213,7 +213,7 @@ public interface Creator { */ @SuppressWarnings("unchecked") public static Creator create(Class clazz) { - if (Collection.class.isAssignableFrom(clazz) && (clazz.isAssignableFrom(ArrayList.class) || clazz.getName().startsWith("java.util.Collections") || clazz.getName().startsWith("java.util.ImmutableCollections") || clazz.getName().startsWith("java.util.Arrays"))) { + if (List.class.isAssignableFrom(clazz) && (clazz.isAssignableFrom(ArrayList.class) || clazz.getName().startsWith("java.util.Collections") || clazz.getName().startsWith("java.util.ImmutableCollections") || clazz.getName().startsWith("java.util.Arrays"))) { clazz = (Class) ArrayList.class; } else if (Map.class.isAssignableFrom(clazz) && (clazz.isAssignableFrom(HashMap.class) || clazz.getName().startsWith("java.util.Collections") || clazz.getName().startsWith("java.util.ImmutableCollections"))) { clazz = (Class) HashMap.class; @@ -221,6 +221,8 @@ public interface Creator { clazz = (Class) HashSet.class; } else if (Map.class.isAssignableFrom(clazz) && clazz.isAssignableFrom(ConcurrentHashMap.class)) { clazz = (Class) ConcurrentHashMap.class; + } else if (Collection.class.isAssignableFrom(clazz) && clazz.isAssignableFrom(ArrayList.class)) { + clazz = (Class) ArrayList.class; } Creator creator = CreatorInner.creatorCacheMap.get(clazz); if (creator != null) return creator;