Embora os docs Java especificar, que as referências fracas são principalmente para Canonicalização mapeamentos, você vai encontrar muitas , muitas , muitas pessoas na internet afirmando, que o WeakHashMap é perfeito para armazenar metadados objeto durante sua vida útil. No entanto, ninguém se preocupa em fazer um exemplo compreensível e apropriado .
Usar o WeakHashMap para adicionar ao objeto algumas propriedades ou armazenar sons de metadados para mim, como uma decisão arbitrária baseada na vontade de usar apenas essa coisa. Em outras palavras - um design ruim . Entendo que há situações em que a herança pode não estar disponível (classes finais, interfaces), mas e a composição? Não consigo pensar em um exemplo em que a composição não seria uma opção. E certamente melhor, porque se baseia em um princípio bem estabelecido, em vez de uma "peculiaridade da linguagem".
Então, existe uma situação em que seria melhor usar referências fracas em vez de composição simples? Se não, por que todos na internet parecem errar?