From 62120f296ca6426a066f25da8556ffcd76d59d57 Mon Sep 17 00:00:00 2001 From: Christoph Dreis Date: Thu, 29 Mar 2018 17:45:45 +0200 Subject: [PATCH] Optimize ClassUtils.forName() for more cases Issue: SPR-16667 --- .../main/java/org/springframework/util/ClassUtils.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/spring-core/src/main/java/org/springframework/util/ClassUtils.java b/spring-core/src/main/java/org/springframework/util/ClassUtils.java index 788678682bca..3f1bc70294cd 100644 --- a/spring-core/src/main/java/org/springframework/util/ClassUtils.java +++ b/spring-core/src/main/java/org/springframework/util/ClassUtils.java @@ -32,7 +32,9 @@ import java.util.IdentityHashMap; import java.util.Iterator; import java.util.LinkedHashSet; +import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import org.springframework.lang.Nullable; @@ -102,10 +104,10 @@ public abstract class ClassUtils { private static final Map> primitiveTypeNameMap = new HashMap<>(32); /** - * Map with common "java.lang" class name as key and corresponding Class as value. + * Map with common Java language class name as key and corresponding Class as value. * Primarily for efficient deserialization of remote invocations. */ - private static final Map> commonClassCache = new HashMap<>(32); + private static final Map> commonClassCache = new HashMap<>(48); static { @@ -138,6 +140,9 @@ public abstract class ClassUtils { Object.class, Object[].class, Class.class, Class[].class); registerCommonClasses(Throwable.class, Exception.class, RuntimeException.class, Error.class, StackTraceElement.class, StackTraceElement[].class); + registerCommonClasses(Enum.class, Optional.class); + registerCommonClasses(Collection.class, List.class, Map.class, Set.class); + javaLanguageInterfaces.forEach(ClassUtils::registerCommonClasses); }