|
22 | 22 | import java.lang.reflect.Type; |
23 | 23 | import java.util.Arrays; |
24 | 24 | import java.util.Collection; |
25 | | -import java.util.HashMap; |
26 | 25 | import java.util.Map; |
27 | 26 | import java.util.function.Supplier; |
28 | 27 | import java.util.stream.Stream; |
|
36 | 35 | import org.springframework.lang.Contract; |
37 | 36 | import org.springframework.util.Assert; |
38 | 37 | import org.springframework.util.ClassUtils; |
| 38 | +import org.springframework.util.CollectionUtils; |
39 | 39 |
|
40 | 40 | /** |
41 | 41 | * Contextual descriptor about a type to convert from or to. |
|
55 | 55 | @SuppressWarnings("serial") |
56 | 56 | public class TypeDescriptor implements Serializable { |
57 | 57 |
|
58 | | - private static final Map<Class<?>, TypeDescriptor> commonTypesCache = new HashMap<>(32); |
| 58 | + private static final Map<Class<?>, TypeDescriptor> commonTypesCache; |
59 | 59 |
|
60 | 60 | private static final Class<?>[] CACHED_COMMON_TYPES = { |
61 | 61 | boolean.class, Boolean.class, byte.class, Byte.class, char.class, Character.class, |
62 | 62 | double.class, Double.class, float.class, Float.class, int.class, Integer.class, |
63 | 63 | long.class, Long.class, short.class, Short.class, String.class, Object.class}; |
64 | 64 |
|
65 | 65 | static { |
| 66 | + Map<Class<?>, TypeDescriptor> commonTypes = CollectionUtils.newHashMap(CACHED_COMMON_TYPES.length); |
66 | 67 | for (Class<?> preCachedClass : CACHED_COMMON_TYPES) { |
67 | | - commonTypesCache.put(preCachedClass, valueOf(preCachedClass)); |
| 68 | + commonTypes.put(preCachedClass, new TypeDescriptor(ResolvableType.forClass(preCachedClass), null, null)); |
68 | 69 | } |
| 70 | + commonTypesCache = Map.copyOf(commonTypes); |
69 | 71 | } |
70 | 72 |
|
71 | 73 |
|
|
0 commit comments