Sebbene i documenti Java specifichino che i riferimenti deboli sono principalmente per la mappatura canonica, troverete molte , molte , molte persone su Internet che affermano che WeakHashMap è perfetto per archiviare i metadati degli oggetti durante la sua vita. Tuttavia, nessuno si preoccupa di fare un esempio comprensibile E appropriato .
Usando WeakHashMap per aggiungere oggetti a me alcune proprietà o archiviare i suoni dei metadati, come una decisione arbitraria basata sulla volontà di usare solo quella dannata cosa. In altre parole: un cattivo design . Capisco che ci sono situazioni in cui l'ereditarietà potrebbe non essere disponibile (classi finali, interfacce), ma per quanto riguarda la composizione? Non riesco a pensare a un esempio in cui la composizione non sarebbe un'opzione. E sicuramente migliore, perché si basa su un principio ben consolidato, anziché su una "stranezza linguistica".
Quindi, c'è una situazione in cui sarebbe meglio usare riferimenti deboli invece di una semplice composizione? In caso contrario, perché tutti su Internet sembrano sbagliare?