SUGGESTED FIX
public static Type resolve(Type actual, Type formal) {
- return new TypeResolver(actual).resolve(formal);
+ return getTypeResolver(actual).resolve(formal);
}
public static Type[] resolve(Type actual, Type[] formals) {
- return new TypeResolver(actual).resolve(formals);
+ return getTypeResolver(actual).resolve(formals);
}
+ public static TypeResolver getTypeResolver(Type type) {
+ synchronized (CACHE) {
+ TypeResolver resolver = CACHE.get(type);
+ if (resolver == null) {
+ resolver = new TypeResolver(type);
+ CACHE.put(type, resolver);
+ }
+ return resolver;
+ }
+ }
+
+ private static final WeakCache<Type, TypeResolver> CACHE = new WeakCache<>();
|