Widziałem obiekty utworzone w kodzie Java bez przechowywania odniesienia do obiektu. Na przykład we wtyczce Eclipse widziałem powłokę SWT utworzoną w następujący sposób:
new Shell();
Ten nowy obiekt Shell nie jest przechowywany w zmiennej, ale pozostanie przywoływany, dopóki okno nie zostanie usunięte, co [Wierzę?] Dzieje się domyślnie, gdy okno jest zamknięte.
Czy tworzenie takich obiektów bez przechowywania odniesienia do nich jest złą praktyką? A może biblioteka była źle zaprojektowana? Co jeśli nie potrzebuję referencji, a chcę tylko „efektów ubocznych” obiektu? Czy mimo to powinienem przechowywać referencje?
AKTUALIZACJA:
Wprawdzie mój powyższy przykład jest słaby. Chociaż widziałem elementy interfejsu użytkownika utworzone w ten sposób, tworzenie powłoki SWT prawdopodobnie byłoby bezcelowe, ponieważ musisz wywołać metodę otwartą w instancji powłoki. Istnieją lepsze przykłady podane przez aix, takie jak poniższe z samouczka Java o współbieżności :
(new HelloThread()).start();
Ta praktyka jest postrzegana w wielu kontekstach, więc pytania pozostają. Czy to dobra praktyka?
Shell.createTopLevelShell()
lub cokolwiek innego, niż użycie konstruktora w tym przypadku. Ale funkcjonalnie nie ma różnicy.)
dispose()
d: Reguła 1: Jeśli go utworzyłeś, pozbędziesz się go. eclipse.org/articles/swt-design-2/swt-design-2.html