Если нужно кешировать метаданные отдельно для каждого класса, не обязательно создавать
ConcurrentHashMap<Class<?>, Metadata>.private static final ClassValue<Metadata> CACHE =
new ClassValue<>() {
@Override
protected Metadata computeValue(Class<?> type) {
return scan(type);
}
};
Metadata metadata = CACHE.get(MyClass.class);
ClassValue лениво вычисляет значение, безопасно работает при конкуренции потоков и хранит отдельный результат для каждого Class. Сбросить кеш можно через remove().Полезно для reflection, сериализации, мапперов и собственных фреймворков.
Полезные ресурсы по Java 👩💻| Наш канал в MAX 🟪
