23. april 2008 - 11:10Der er
7 kommentarer og 3 løsninger
deconstructor i java, finalize
Hey
Jeg sidder og har gang i noget serial kommunikation i java, og har så et problem når jeg skal lukke min serial port.
Jeg vil gerne have en deconstructor som i c++ hvor den bare bliver kørt til sidst i programmet, men ved java ikke har det samme... Men har læst mig lidt frem til finalize, men den virker ikke helt som jeg vil :)
Min løsning lige pt er at brugeren selv kalder en metode som inder holder serialPort.close();, men er det muligt at gøre "automatisk" når programmet lukker.
Den her har jeg prøvet, men det virker ikke. Er det vejen frem :) ?
protected void finalize() throws Throwable { //do finalization here System.out.println("Serial port closed"); serialPort.close(); System.exit(1); super.finalize(); //not necessary if extending Object. } */
Nu er det rigtigt mange år siden sidst jeg har programmeret c++, men så vidt jeg husker bliver et objects deconstructor kaldt når objectet bliver deleted (new delete) og altså stadigt en ting programmøren selv skal holde styr på at gøre. Det svarer meget godt til at du skal kalde port.close() når du er færdig. Alternativt kan du gøre det når VM'en stopper, ved at tiføje en shutdown hook, som simonvalter skriver.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.