Avatar billede rosgaard Nybegynder
23. april 2008 - 11:10 Der 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.
    } */


På forhånd tak

//Rosgaard
Avatar billede simonvalter Praktikant
23. april 2008 - 12:21 #2
Avatar billede rosgaard Nybegynder
23. april 2008 - 12:31 #3
Jeg kigger lige om jeg kan finde ud af det, tak :)
Avatar billede rosgaard Nybegynder
23. april 2008 - 13:19 #4
Hmm ved du der er noget der som jeg kan bruge eller var det bare et "gæt" ?

For jeg kan i hvert fald ikke få det til at virke
Avatar billede lborupj Nybegynder
23. april 2008 - 19:04 #5
Hmmm

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.
Avatar billede arne_v Ekspert
23. april 2008 - 19:19 #6
finalizer er et rigtigt daarligt valg. der er stort set kun 2 muligheder:
1) de bliver ikke kaldt
2) de bliver kaldt for sent

et eksplicit close kald i en finally block er den rigtige loesning

shutdown hook er ogsaa brugbart til nogen ting men er for sen til klassisk destructor brug
Avatar billede rosgaard Nybegynder
30. april 2008 - 10:57 #7
okay tak, smid nogle svar alle 3 så fordeler jeg pointene.
Avatar billede lborupj Nybegynder
30. april 2008 - 21:34 #8
svar
Avatar billede arne_v Ekspert
01. maj 2008 - 01:47 #9
.
Avatar billede simonvalter Praktikant
03. maj 2008 - 14:40 #10
ok
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester