Aunque los documentos de Java especifican que las referencias débiles son principalmente para canonizar las asignaciones, encontrará muchas , muchas , muchas personas en Internet que afirman que WeakHashMap es perfecto para almacenar metadatos de objetos durante su vida útil. Sin embargo, nadie se molesta en hacer un ejemplo comprensible Y apropiado .
Usar WeakHashMap para agregar objetos algunas propiedades o almacenar sonidos de metadatos para mí, como una decisión arbitraria basada en la voluntad de usar la maldita cosa. En otras palabras, un mal diseño . Entiendo que hay situaciones en las que la herencia puede no estar disponible (clases finales, interfaces), pero ¿qué pasa con la composición? No puedo pensar en un ejemplo en el que la composición no sea una opción. Y sin duda uno mejor, porque se basa en un principio bien establecido, en lugar de una "peculiaridad del lenguaje".
Entonces, ¿hay una situación en la que sería mejor usar referencias débiles en lugar de una composición simple? Si no, ¿por qué todos en Internet parecen equivocarse?