Chociaż docs Java określić, że odniesienia Słabe są przede wszystkim dla canonicalizing mapowania, znajdziesz wiele , wiele , wiele ludzi w internecie stwierdzające, że WeakHashMap jest idealny do przechowywania metadanych obiektu w trakcie jego trwania. Jednak nikt nie zadaje sobie trudu, aby podać zrozumiały I odpowiedni przykład.
Używanie WeakHashMap do dodawania do obiektu niektórych właściwości lub przechowywania dźwięków metadanych, jak arbitralna decyzja oparta na chęci użycia tego cholerstwa. Innymi słowy - zły projekt . Rozumiem, że są sytuacje, w których dziedziczenie może nie być dostępne (klasy końcowe, interfejsy), ale co ze składem? Nie mogę wymyślić jednego przykładu, w którym kompozycja nie byłaby opcją. I na pewno lepszy, ponieważ opiera się na ugruntowanej zasadzie, zamiast „dziwactwa językowego”.
Czy jest więc sytuacja, w której lepiej byłoby użyć słabych referencji zamiast prostej kompozycji? Jeśli nie, to dlaczego wszyscy w Internecie źle to rozumieją?