Gå til innhold

Er det mulig å slette et objekt?


Anbefalte innlegg

Jeg har et objekt 'd' av typen Database. Databasen får all informasjon fra en klasse med en stor, todimensjonal tabell.

Jeg har ny informasjon, som innkluderer all informasjon som inngår i tabellen som Database henter informasjon fra, med andre ord, for å oppdatere den opprinnelige databasen vil jeg slette den, importere den nye informasjonen og opprette en ny database med samme navn som den forig.

For å få dette til må jeg mao. slette den opprinnelige databasen. Hvordan gjør jeg det?

Kan jeg få Garbage Collector til å plukke objektet opp på kommando?

Lenke til kommentar
Videoannonse
Annonse

Litt vanskelig å tyde hva som 'Database' klassen din består av. Er det også en to-dimensjonal tabell her inne, eller hva er det for noe?

 

Sletting av et objekt i java er ikke verre enn å fjerne pekere til den i koden, dvs. du null-stiller objektet, så vil garbage collector ta seg av den. Men tror ikke det du vil gjøre, for du vil bare tømme "databasen" og legge inn nye data, sant?

 

Hvis du legger ved litt kode her, eller forklarer litt mer om database klassen, så er det litt lettere å hjelpe.

 

Så svaret på spørsmålet ditt foreløpig vil bli:

 

d = null;

d = new Database();

 

Men jeg tviler på at det er dette her du vil gjøre, er litt usikker.

Lenke til kommentar

Takk for hjelpen!

Databasen inneholder bare en diger todimensjonal tabell.

Det jeg gjorde var å opprette en ny database 'f'

og så satte jeg den gamle databasen 'd' lik f

altså:

Database f = new Database(import.lesFil);

d = f;

 

Tror din metode er bedre.

Lenke til kommentar
Takk for hjelpen!

Databasen inneholder bare en diger todimensjonal tabell.

Det jeg gjorde var å opprette en ny database 'f'

og så satte jeg den gamle databasen 'd' lik f

altså:

Database f = new Database(import.lesFil);

d = f;

 

Tror din metode er bedre.

Database f = new Database(import.lesFil);

 

denne setningen oppretter en peker "f" som peker til objektet opprettet av new Database(import.lesFil); Med andre ord har du en peker f som inneholder adressen til hvor objektet det peker til er i datamaskinens hukommelse.

 

d = f;

 

Denne setningen gjør at d peker til samme objekt som f peker til. Du har nå to pekere (referanser er vel Javas rette navn) som peker til samme objekt. Dersom d pekte til et annet objekt tidligere, og det objektet ikke har noen pekere til deg marker Java det for Garbage Collection og det blir slettet etterhvert.

 

Dersom du ikke har bruk for variabelen f senere i programmet kan du gjøre det samme i en linje::

 

d = new Database(import.lesFil);

 

---

 

For å si det på en annen måte

 

MittObjekt a = new MittObjekt("1");

MittObjekt b = a;

 

Du har nå to referanser som peker til et objekt av typen MittObjekt med veriden 1. både a og b peker til dette objektet.

 

b = new MittObjekt("2);

 

a peker til 1

b peker til 2

 

a = b;

 

a peker til 2

b peker til 2

1 markeres til Garbage Collection ettersom det ikke finnes noen referanser til objektet

 

b = new MittObjekt("3");

 

a peker til 2

b peker til 3

 

a = null;

 

a peker ikke til noe

b peker til 3

2 markeres til Garbage Collection

 

b = null;

 

a peker ikke til noe

b peker ikke til noe

3 markeres til Garbage Collection

 

Håper det gjør det litt enklere for deg.

 

 

Du kan kalle Garbage Collection manuelt, men det er ikke anbefalt. sjekk ut System.gc(); hvis du ønsker å teste dette.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...