Niszczenie obiektów

0

Witam,

Jak w temacie. Wiem że Java ma wspaniałe narzędzie pt Garbage Collector, ale dręczy mnie jedna sprawa. Mianowicie mam formularz w który należy podać okres wypożyczenia samochodu od-do. Żeby nie klepać ręcznie zrobiłem kalendarz, który uruchamia się jako kolejne JFrame

Frame calendar = new Frame();

W kalendarzu zanaznaczam okres i potwierdzam, po czy Frame nie jest już potrzebny. W tym momencie wywołuję

calendar.dispose();

I tu pytanie. Czy dispose() niszczy obiekt całkowicie? Czy powinienem sobie tym w ogóle zawracać głowę czy po prostu zamykać JFrame i tyle. Zastanawiam się ponieważ ten kalendarz może być wywołany kilka lub kilkanaście razy podczas działania programu i za każdym razem tworzony jest obiekt. Czy rozwiązanie polegające na tym, że tworzył bym obiekt tylko raz a żeby go pokazać wywoływałbym metodę

frame.setVisible(true);

i analogicznie do zamykania

frame.setVisible(false);

było by lepsze?

Pozdrawiam.

0

Obiekt jest usuwany przez GC w momencie gdy nie istnieje do niego żadna referencja. Dokumentacja:

Releases all of the native screen resources used by this Window, its subcomponents, and all of its owned children. That is, the resources for these Components will be destroyed, any memory they consume will be returned to the OS, and they will be marked as undisplayable.

http://java.sun.com/j2se/1.5.0/docs/api/java/awt/Window.html#dispose()

Inna sprawa to lepszym rozwiązaniem jest stworzenie obiektu Kalendarz jako osobnej klasy i trzymanie jej jako singletonu. W takim wypadku zawsze będziesz miał tylko jeden obiekt kalendarza i po pierwszym użyciu nie będziesz marnował czasu na kolejne tworzenie obiektu. Dodatkowo warto napisać metodę reset(), która będzie zerowała kalendarz po zamknięciu do stanu początkowego.

1 użytkowników online, w tym zalogowanych: 0, gości: 1