Avatar billede conehead Nybegynder
24. november 2003 - 16:24 Der er 2 kommentarer og
2 løsninger

arraylist ændres

davs, jeg kan ikke helt forstå ideen i at denne kode ender med at min ArrayList indeholder værdien 3 på samtlige pladser(dvs jeg kan godt se hvordan det sker, men er det virkeligt nødvendigt at oprette flere integers for at undgå dette?) Hver gang jeg ændrer værdien af x, ændres også værdien i min ArrayList. Hvor kan jeg læse om det?

kode:
    public class test1
    {
        ArrayList al=new ArrayList();
        test2 t2=new test2();

        public void dosomething()
        {
            t2.setx(1);
            al.Add(t2);
            t2.setx(2);
            al.Add(t2);
            t2.setx(3);
            al.Add(t2);
        }
    }

    public class test2
    {
        int x;

        public int getx()
        {    return x;    }
        public void setx(int y)
        {    x=y;        }
    }
}
Avatar billede nielsbrinch Nybegynder
24. november 2003 - 16:42 #1
Du ændrer i den samme instans af klassen test2 hver gang. Hvis du tilføjer en instans af en klasse til en ArrayList, og efterfølgende ændrer på instansen, ændres instansen i ArrayList'en også, idet alle steder hvor instansen nævnes er referencer til præcis den samme instans. Giver det mening?
Avatar billede arne_v Ekspert
24. november 2003 - 16:43 #2
Du gemmer 3 referancer til samme objekt. Det skal give 3 ens.

Du er nødt til at oprette forskellige objekter for at få forskellige værdier.
Avatar billede arne_v Ekspert
24. november 2003 - 16:44 #3
Rent praktisk: giv test2 en constrcutor med et argument, så du kan:

al.Add(new test2(123));
Avatar billede conehead Nybegynder
24. november 2003 - 17:37 #4
ja det var det jeg tænkte....tak for det
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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