Лучшее объяснение цели этого класса состоит в том, что он решает Java Bug 6389107
Есть много случаев использования, когда по какой-то причине кто-то хочет иметь Map<Class<?>, T>
, но это вызывает всевозможные проблемы, так как объекты Class
не будут в состоянии GC, пока карта не будет. WeakHashMap<Class<?>, T>
не решает проблему, потому что очень часто T
ссылается на класс.
Вышеприведенная ошибка входит в гораздо более подробное объяснение и содержит примеры проектов / кода, которые сталкиваются с этой проблемой.
ClassValue является ответом на эту проблему. Потоково-безопасный загрузчик / выгрузка classloader безопасный способ связать данные с Class.