siDDis Skrevet 29. november 2005 Del Skrevet 29. november 2005 til å fungere i andre klasser? Feks HashMap person = new HashMap(); Korleis får eg då 'person' til å fungere i ein anna klassa? public forann ser ikkje ut til å fungere. Lenke til kommentar
Gjest Sletet+adslkfjv Skrevet 29. november 2005 Del Skrevet 29. november 2005 her kommer et lite eksempel import java.util.HashMap; public class hashtest { static HashMap person = new HashMap(); public static void main(String[] args) { person.put(0, "a"); hashinput inp = new hashinput(); } } det var den første fila, og så kommer den andre her public class hashinput { hashinput(){ System.out.println(hashtest.person.get(0)); } } Lenke til kommentar
smetho Skrevet 29. november 2005 Del Skrevet 29. november 2005 Det vanligste er nok å bruke metoder for å få tilgang til data i andre klasser, ofte kalt get/set-metoder. Du kan da hente ut en kopi av dataene/objektet (metode som returnerer dataene/objektet) slik at du kan jobbe med det der det passer deg, eller du kan jobbe mot metoder i klassen som har dataene. Håper jeg forstod spørsmålet riktig nå Lenke til kommentar
blackbrrd Skrevet 29. november 2005 Del Skrevet 29. november 2005 Objekter i java blir sendt by reference i utgangspunktet, så hvis et objekt returnerer et objekt til en annen klasse, som endrer på innholdet av objektet så vil dataene være endret inne i den første klassen og, det er nemlig samme objekt. Dette stemmer logisk nok ikke hvis objektet er klonet før det blir returnert av get metoden, men dette er noe man vanligvis ikke gjør. Lenke til kommentar
siDDis Skrevet 29. november 2005 Forfatter Del Skrevet 29. november 2005 Nå går ting her litt over det eg har kontroll over. Det dykk seier er at eg må klone HashMappet og senda det over til den andre klassen? Eksempelet til logindude var og litt tvilsomt da han gjer denna handlinga utan å kjøre ein void metode. Planen min er at eg har ein eigen klasse som leser frå fil inn til hashmappet og ein anna klasse der eg skriver ut til fil frå hashmappet og ein klasse der eg manipulerer data i terminal vindauget. Programmet blei så stort at eg valgte å lage eigne klasser for detta så det blei meir oversiktlig. Burde eg heller ta alt i ein klasse? Lenke til kommentar
blackbrrd Skrevet 29. november 2005 Del Skrevet 29. november 2005 Hei, du trenger ikke noe global variabel for å få gjort dette... La oss si at du har tre klasser, FilLeser, FilSkriver og FilManipulerer programmet ditt burde starte i FilManipulerer Der oppretter du FilLeser som har en public metode som ser slik ut: public HashMap get() { ... } og FilSkriver som har en public metode som ser slik ut: public void set(HashMap hmap) { ... } Det er kanskje greit å vite at du kan opprette objekter av dine egne klasser på akkurat samme måte som ferdiglagde, f.eks FilLeser filLeser = new FilLeser(); Her hadde det vært logisk å lage en constructor som tok inn et filnavn, så du kunne skrevet noe sånt som: FilLeser filLeser = new FilLeser("filnavnpåfiljegvillese.txt"); Lenke til kommentar
siDDis Skrevet 30. november 2005 Forfatter Del Skrevet 30. november 2005 takk då er eg litt meir med, skal sjå om eg greier det nå Lenke til kommentar
smetho Skrevet 30. november 2005 Del Skrevet 30. november 2005 Objekter i java blir sendt by reference i utgangspunktet, så hvis et objekt returnerer et objekt til en annen klasse, som endrer på innholdet av objektet så vil dataene være endret inne i den første klassen og, det er nemlig samme objekt. Dette stemmer logisk nok ikke hvis objektet er klonet før det blir returnert av get metoden, men dette er noe man vanligvis ikke gjør. 5228590[/snapback] Uff da, den var bad av meg. Takk for rettelsen. Jeg var klar over det, men tenkte litt feil Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå