14. november 2001 - 22:30Der er
6 kommentarer og 1 løsning
collection
Hej.....jeg sidder lige og er i gang med at lære at bruge collections.....Jeg bruger en ListArray...men altså en Vector kunne jeg jo i princippet også ligesågodt bruge. Det er sådanset lidt ligemeget. For mit spørgsmål er hvordan jeg får objekterne ud af min collection igen efter jeg har puttet dem derind. Der findes jo metoden get() som returnerer et objekt. Men hvordan får jeg så lige fat i attributterne på dette objekt...Har hørt noget om at mand skal bruge en Iterator eller sådan noget....men hvis der var en der villle være så rar at forklare...så ville jeg blive glad
I lang tid har samarbejdsbranchen fokuseret på at forbedre enhedsfunktioner – bedre kameraer, klarere lyd og smartere software. Men den virkelige forvandling handler ikke om funktioner.
for (int i=0; i<alist.size(); i++) { System.out.println((String)alist.get(i)); }
Og der er stor forskel på en Vector og en ArrayList. En Vector er sunkroniseret og det er en ArrayList ikke, så skal men ikke bruge synkronisering skal man bruge en ArrayList, det vil være meget hurtigere.
Ja at få fat på e string eller en int kan jeg godt. Men hvad hvis jeg har lagt et abstract object derind, og jeg gerne vil have fat i metoderne og attributterne på dette når det ligger inde i min collection. Hvordan gør jeg det?
nej ok....det var heller ikke det jeg mente :) Mente bare abstrakt i den forstand at der var flere forskellige varibaler og metoder på denne. Altså fx. i modsætning til en int som jo er ret simpel. Selve klassen objektet oprettes fra skal ikke erklæres abstrakt eller noget....bare et objekt med flere variabler. Hvordan får jeg fat i dette objekt inde fra min collection?
Når du har lagt en instans af en klasse i en collection er den gemt som en instans af klassen Object, som alle klasser jo arver fra. Når så vil have et object ud fra en collection igen bliver du nødt til at omdanne ( caste ) det fra Object til den klasse den var før. Dette kaldes casting. eks:
Vector v = new Vector(); MyClass myClass1 = new MyClass(); v.add(myclass1);
myClass er nu gemt som typen Object i vectoren.
MyClass myClass2 = v.elementAt(0); Dette ville ikke virke da man forsøger at tildele en reference af typen MyClass til en instans af typen Object. Man skal lige caste typen Object til typen MyClass. MyClass myClass2 = (MyClass)v.elementAt(0); sådan, nu virker det. nu kan du kalde variabler og metoder på objektet med referencen myClass2. Der er specielle regler for hvordan man kan caste, f.eks kan man kun caste op ad i class herakiet. Men det er en helt anden historie....
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.