Ako naozaj odstranit objekt

Moderátor: FeroG

<<

Cabernet

Príspevky: 31

Registrovaný: Uto Okt 08, 2013 5:44 pm

Poslať Štv Nov 14, 2013 7:51 pm

Ako naozaj odstranit objekt

Zdravim,

chcem sa spytat ako mam naozaj odstranit nejaky objekt, pretoze ked napr.skusam objektu priradit null (hrac = null;) alebo priamo vytvorit novy objekt ( hrac = new Hrac(); ) tak sice sa vytvori novy objekt ale predosly este stale exituje, len nan stratim referenciu (aspon to tak vypada). Konkretne ide o objekt rozsirujuci typ TickTimer ktory nemozem nijako zmazat a metoda onTick() sa stale vykonava. Dalo by sa to vyriesit nastavenim setTickPeriod(0) ale to zrejme neni najlepsie riesenie. Vdaka
Stay hungry. Stay foolish.
<<

FeroG

Príspevky: 1290

Registrovaný: Uto Máj 29, 2007 11:25 am

Poslať Štv Nov 14, 2013 8:44 pm

Re: Ako naozaj odstranit objekt

Cabernet píše:chcem sa spytat ako mam naozaj odstranit nejaky objekt,

Java umoznuje objekty len vytvarat, odstranit objekt nie je mozne. Na to ma pravo len garbage collector, ktory takto (az nastane spravna chvila podla GC) zlikviduje nereferencovane objekty z aplikacie. Tu si ale treba uvedomit niekolko dalsich aspektov:
(1) To, ze ja vo svojom kode nemam pristup k objektu, neznamena, ze objekt nie je referencovany. Objekt totiz moze byt referencovany z privatnej instancnej premennej nejakeho objektu, ktory referencujem. Nie je to presne ten pripad, ale mozete si vsimnut, ze korytnacka z plochy nezmizne, ked ju zo svojho kodu nereferencujete. Totiz plocha si pamata korytnacky, ktore do nej boli vlozene (a je mozne ich ziskat cez metodu getTurtles()).
(2) TickTimer je este komplikovanejsia zalezitost, kedze suvisi s vlaknami v kombinacii s tzv. vnutornymi triedami (inner classes). V podstate plati, ze kym tickTimer ma aktivne tikanie, tak kdesi v aplikacii nan existuje niekde referencia. Ak chces teda TickTimer zlikvidovat, jedina sanca je vypnut jeho tikanie (nastavenim tickPeriod na 0). Doplnim este, ze toto nie je specialita JPAZu, ale uplne standardne spravanie v podobnych situaciach. Dokonca nieco take by bol problem v Jave vyriesit (existuju sice aj tzv. slabe referencie, ktore by na nieco take islo vyuzit, ale tiez by nebola garancia, ze sa objekt zlikviduje ihned po nastaveni hodnoty na null).

Zaver: setTickPeriod nastavene na 0 je najlepsie riesenie. :-)
<<

Cabernet

Príspevky: 31

Registrovaný: Uto Okt 08, 2013 5:44 pm

Poslať Sob Nov 16, 2013 6:02 pm

Re: Ako naozaj odstranit objekt

Este jeden dotaz, zda sa mi to alebo kniznica jpaz2-deploy nepodporuje ziadne kreslacie metody korytnacky(dot, pen a pod.)?
Stay hungry. Stay foolish.
<<

FeroG

Príspevky: 1290

Registrovaný: Uto Máj 29, 2007 11:25 am

Poslať Sob Nov 16, 2013 6:06 pm

Re: Ako naozaj odstranit objekt

Cabernet píše:Este jeden dotaz, zda sa mi to alebo kniznica jpaz2-deploy nepodporuje ziadne kreslacie metody korytnacky(dot, pen a pod.)?

Kresliace metody su urcite podporovane. Deploy verzia je normalna verzia bez zdrojakov, z ktorej je navyse vyhodeny prec ObjectInspector (kedze ten je v JPAZe len kvoli edukacnym ucelom v prvej casti semestra).
<<

Cabernet

Príspevky: 31

Registrovaný: Uto Okt 08, 2013 5:44 pm

Poslať Sob Nov 16, 2013 6:14 pm

Re: Ako naozaj odstranit objekt

FeroG píše:Kresliace metody su urcite podporovane. Deploy verzia je normalna verzia bez zdrojakov, z ktorej je navyse vyhodeny prec ObjectInspector (kedze ten je v JPAZe len kvoli edukacnym ucelom v prvej casti semestra).


Aha jasne, mal som si blizsie pozriet kniznice, vsetko tam je. Problem bol v tom ze kreslecie metody sa vykonavali uz v konstruktori korytnacky, a tie sa vykonavaju este pred pridanim korytnacky na obrazovku.
Stay hungry. Stay foolish.

Späť na PAZ1a

Kto je on-line

Užívatelia prezerajúci fórum: Žiadny registrovaný užívateľ nie je prítomný a 1 hosť

cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software.
Slovenský preklad.