Avatar billede jochke Nybegynder
09. november 2004 - 15:04 Der er 19 kommentarer og
2 løsninger

Oprette objekter i ArrayList

ArrayList opgaver = new ArrayList();
        opgaver.add (new Fag("Dat",8,2));

Vil man kunne skrive det?

og i så fald, hvordan kan jeg kalde en metode i objektet, når det ligger i et array?
Avatar billede erikjacobsen Ekspert
09. november 2004 - 15:14 #1
Det ser da korrekt ud. Du kan kalde som

  ((Fag)opgaver.get(0)).dinMetode()
Avatar billede martinbk Nybegynder
09. november 2004 - 15:17 #2
ja du kan godt skrive ovenstående,

java 1.4.x:
du kan ikke direkte tilgå en metode i din ArrayList du er nød til først at hive objectet ud:

Fag f = (Fag) opgaver.get(index);
f.metode();

java 1.5 (5.0):
du kan bruge generics typer til at erklære en ArrayList udelukkende bestående af "Fag" såfremt den skal kunne det:

ArrayList<Fag> opgaver = new ArrayList<Fag>();

herefter vil du kunne tilgå metoder direkte:

opgaver.get(0).metode();
Avatar billede martinbk Nybegynder
09. november 2004 - 15:18 #3
du kan self. også gøre som erik foreslår, dog synes jeg ikke det er særlig pænt, har man ret mange casts inde i casts bliver det hurtigt uoverskueligt, men igen det er en smagssag
Avatar billede arne_v Ekspert
09. november 2004 - 15:47 #4
Eriks syntax er ihvertfald brugt meget ...
Avatar billede martinbk Nybegynder
09. november 2004 - 15:54 #5
arne_v: helt enig, og det er nok også det nemmeste i en så simpel løsning, men som du jo nok selv ved så mister man hurtigt overblikket hvis der er 20 paranteser inden i hinanden
Avatar billede jochke Nybegynder
09. november 2004 - 16:05 #6
Kan godt nok ikke få den til at virke. Er ret ny i java og oop.

    public getThis()
    {
        Fag f = (Fag) opgaver.get(1);
        return f.getNavn();
    }

Hvad er der galt her?
Avatar billede arne_v Ekspert
09. november 2004 - 16:07 #7
Der mangler retur type i metode erklæringen !
Avatar billede arne_v Ekspert
09. november 2004 - 16:07 #8
Måske:

    public String getThis()
    {
        Fag f = (Fag) opgaver.get(1);
        return f.getNavn();
    }
Avatar billede jochke Nybegynder
09. november 2004 - 16:10 #9
Nåe ja...selfølgelig. Men når jeg kalder metoden får jeg fejlen:
"NullPointerException: null"

Og det er for linien: Fag f = (Fag) opgaver.get(1);
Avatar billede arne_v Ekspert
09. november 2004 - 16:12 #10
Er ophaver initialiseret ?

ArrayList opgaver = new ArrayList();
Avatar billede jochke Nybegynder
09. november 2004 - 16:13 #11
Jeps i min constructor:

    public void Studerende(int cpr, String navn)
    {
        this.cpr = cpr;
        this.navn = navn;
       
        ArrayList opgaver = new ArrayList();
        opgaver.add (new Fag("Dat",8,2));
        opgaver.add (1,new Fag("EØ",3,0));
        opgaver.add (2,new Fag("Org",4,0));
        opgaver.add (3,new Fag("Sam",4,0));
    }
Avatar billede arne_v Ekspert
09. november 2004 - 16:17 #12
public void Studerende(int cpr, String navn)
    {
        this.cpr = cpr;
        this.navn = navn;
     
        opgaver = new ArrayList(); // <----- rettet
        opgaver.add (new Fag("Dat",8,2));
        opgaver.add (1,new Fag("EØ",3,0));
        opgaver.add (2,new Fag("Org",4,0));
        opgaver.add (3,new Fag("Sam",4,0));
    }
Avatar billede arne_v Ekspert
09. november 2004 - 16:17 #13
Du laver en lokal variabel som "skygger" for instans variabelen
Avatar billede jochke Nybegynder
09. november 2004 - 16:20 #14
Det er jo kanont arne. Hvorfor skal man ikke definere at opgaver er af typen ArrayList?
Avatar billede jochke Nybegynder
09. november 2004 - 16:21 #15
Hmm okay.

Men takker for hjælpen.

Svar så der kan gives point. :)
Avatar billede arne_v Ekspert
09. november 2004 - 16:33 #16
svar

(men Erik og Martin har vel også bidraget ...)
Avatar billede jochke Nybegynder
09. november 2004 - 16:39 #17
Jeps...de skal også svare.
Avatar billede martinbk Nybegynder
09. november 2004 - 16:41 #18
svar
Avatar billede jochke Nybegynder
09. november 2004 - 16:42 #19
Arne får 20, og I 2 andre får hver 10. Hvis I da vil svare. :)
Avatar billede arne_v Ekspert
09. november 2004 - 16:51 #20
martin har svaret - erik vil sandsyneligvis ikke have point, men derfor er det jo pænt
at spørge alligevel
Avatar billede erikjacobsen Ekspert
09. november 2004 - 19:03 #21
Nej tak, ingen point til mig.
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