14. december 2000 - 18:18Der er
13 kommentarer og 2 løsninger
Save objekter til fil
Ville høre om andre har haft lignende problemer.
Jeg har en række hægtede lister og arrays som bliver lagt i ét objekt. Når det bliver hentet fra harddisken igen mangler nogle atributter pludselig fra objekterne.
Jeg har en test-fil som opretter hele objekthierakiet istedet for at indlæse fra fil og der virker det.
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Der modtages: ObjectList - objekter er hægtede lister Det er underligt nok ikke alle atributter der tabes. fx i objekter fra en klasse Barn tabes cpr nummeret, men navnet beholdes (ligger i venteliste) Efter indlæsning fra harddisk kaldes metoder til at få de enkelte lister og arrays ud fra det samlede objekt fx public ObjectList getVenteliste () { return venteliste; }
Ja der gemmes et objekt med referencer til hægtede lister som har objekter der igen peger på kryds og tværs til andre lister. Derfor ligger det i et objekt da referencerne ellers bliver \"skåret over\" imellem de hægtede lister, men så opstod dette problem. Der indlæses med:
public static KovsData loadData() throws Exception { KovsData data; FileInputStream indFil = new FileInputStream (navn); ObjectInputStream indObject = new ObjectInputStream (indFil);
data = (KovsData)indObject.readObject(); indFil.close(); return data; }
og nej, alle informationerne bliver vist ikke gemt. jeg kan ihvertfald ikke finde dem ved at søge i filen. Selvom de er der øjeblikket før der bliver gemt:
Jeg er desværre bange for, at din opbygning af objekter gør, at det ikke er lige til, at gemme og hente dine objekter.
Hvis du gemmer dine hægtede lister seperat (ikke som del af et andet objekt) gemmes alle data så ??
Såfremt at de gør det, så ville jeg opbygge min gem metode,op på den måde, at jeg for det givne objekt gemmer de enkelte hægtede lister en ad gangen. Det samme gælder for de arrays du har.
Indlæsningen foregår så i samme rækkefølge som jeg gemte de forskellige ting.
Hvis de hægtede lister gemmes hver for sig klippes referencerne imellem dem over. Altså en hægtet liste indeholder objekter som peger på objekter i en anden hægtet liste eller array.
Når listerne genindlæses hver for sig peger objekterne i den første så på deres egne objekter og ikke dem i den anden liste (i øvrigt et problem der voldte gevaldige kvaler i klassen - det er et projekt på datamatiker udd. og damn det skal afleveres i morgen eftermiddag)
Derfor blev alle lister og arrays lagt i ét \"save-objekt\", men nu tabes atributterne altså på de enkelte objekter fra listen.
Der er før gemning af de \"store\" objekter blevet testet på objekter af \"fake\" klasser.
Davsclaus har højst sandsynligt fat i noget - efter at jeg har konsulteret en bog, der lå og samlede støv.
med hensyn til din datastruktur skal det forståes sådan, at de enkelte elementer i den hægtede liste, ud over at pege på elementer af egen type ( det er lige som det der udgør den hægtede liste), også har referencer til andre elementer der værd i sær indgår i en anden hægtet liste eller i et array.
Det du beskriver minder umiidelbart ikke meget om en hægtet liste. (muligvis mig der misforstår det du skriver)
Jeg er ikke så god til at forklare mig, men jeg ved godt hvad hægtede lister er. Og jo objektet der er den hægtede liste peger på et objekt af sin egen type. Det peger også på et objekt som er dataene i den hægtede liste og det er det objekt som bla. peger videre på objekter i andre hægtede lister. (et eller flere af dets atributter)
Det lavede problemer. Nu er det alm. Strings der tabes.
Alle objekter implementerer Serializable interfacet. Og det gør String jo også så det er altså ikke der problemet er.
I øvrigt implementerer alle objekter, lagt i listerne, også vores eget interface så der kan bruges polymorfisme ved kald af metoder fra control-klassen til de hægtede lister som modtager objekter ved hjælp af interfacets reference.
Well ok, sikkert heller ikke smart at lave datastrukturer af den art når man går på 1. semester. Håbede at vi bare havde lavet en generel brøler, men problemet må vel være større end det - altså når brugerne på eksperten ikke kan hjælpe hvem skulle så kunne...
Ny ved jeg ikke hvordan dit udviklingsforløb har været men lidt analyse til at starte med er en god ting, i stedet for bare at gå i gang med at kode. Tro mig jeg har set og følt det selv.
Men hvem ved, der kan stadig dukke en op med de vise sten. :-)
Fandt fejlen, \"lille\" brøler som jeg troede i starten. Et par klasser i systemet arvede nogle attributter. Klassen de arvede fra implementerede ikke Serializable.
>> lucifer læg et svar. Det er min politik at stiller jeg spørgsmål og en prøver at hjælpe skal det ikke være spildt arbejde selvom jeg selv finder ud af det. Halvdelen af pointene er dine.
Egentlig en lille svaghed i java. Burde melde fejl, det gør den jo hvis det er nogen af de andre.
Synes godt om
Ny brugerNybegynder
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.