Toon posts:

[JAVA]Probleem met list van objecten

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben een simpel magazijn aan het maken. Dit doe ik mbv een LinkedList. Hierin zet ik een aantal verschillende objecten.

Het probleem is dat ik de waardes uit die objecten wil halen. Als ik gewoon een println opdracht gebruik
code:
1
System.out.println(Magazijn.get(0));
krijg ik de naam van de pointer te zien (da's logisch). Ik wil een methode vanuit het object aanroepen welke een waarde vanuit het object laat zien.

Ik dacht dat je gewoon de pointernaam.methode moest gebruiken, maar dat werkt niet.

Kan iemand mij vertellen hoe dat werkt? Ik kon er hier op GoT niet veel nuttigs over vinden.

  • Glimi
  • Registratie: Augustus 2000
  • Niet online

Glimi

Designer Drugs

(overleden)
Dit komt omdat je nu ongetypeerde lijsten gebruikt en dus een Object terug krijgt. Je zult dus eerst moeten casten of een LinkedList<E> moeten gebruiken (Java 1.5).
Trouwens, get(0) is veel trager dan getFirst van de LinkedList class Err, sorry, dat is alleen zo bij een getLast en een get( list.size() -1 )

[ Voor 19% gewijzigd door Glimi op 24-05-2005 10:59 . Reden: OMG casten met een k? ]


  • Erik1
  • Registratie: Juni 2001
  • Niet online
println((Product)Magazijn.get(0).eenMethode()); oid werkt niet?

[ Voor 12% gewijzigd door Erik1 op 24-05-2005 10:47 ]


  • RSchellhorn
  • Registratie: Augustus 2001
  • Laatst online: 02-05 20:03
De collectieklassen geven objecten terug van het type java.lang.Object. Je methode staat waarschijnlijk in een andere klasse gedefinieerd. Je zult dus of moeten casten of van de nieuwe Java 5 gebruik gaan maken, waar je generieke collecties kan maken, die objecten van een specifieke klasse terug kunnen geven.

"Ik heb zo veel soep gegeten, dat kan een mens niet aan. Ik heb zo veel soep gegeten, kan bijna niet meer staan. Ik zat daar maar te slurpen achter die grote kop en als ik bijna klaar was, dan schepten ze weer op!" (Hans Teeuwen)


  • MrBucket
  • Registratie: Juli 2003
  • Laatst online: 29-10-2022
Verwijderd schreef op dinsdag 24 mei 2005 @ 10:42:
Ik ben een simpel magazijn aan het maken. Dit doe ik mbv een LinkedList. Hierin zet ik een aantal verschillende objecten.
-knip-
Ik dacht dat je gewoon de pointernaam.methode moest gebruiken, maar dat werkt niet.
Je Magazijn is dus een LinkedList?
Als je java 1.5 gebruikt zou je idd een typed collection kunnen gebruiken, zoals Glimi zegt.

De crux van het probleem zit 'm in het feit dat een LinkedList geschreven is om Objecten in op te slaan en te retourneren. M.a.w., de expressie "Magazijn.get(0)" levert een instantie van Object op. Deze zul je eerst moeten casten naar een instantie van jouw eigen klasse, en dan kan je wel een methode ervan aanroepen.
Java:
1
2
3
4
5
6
Object obj = Magazijn.get(0);
MyClass myobj = (MyClass)obj;
myobj.myMethod();

/* verkort */
((MyClass)Magazijn.get(0)).myMethod();

Verwijderd

Topicstarter
Ok mensen bedankt. Ik cast nu het object naar de goede klasse en dan werk het.

  • Kwistnix
  • Registratie: Juni 2001
  • Laatst online: 14:53
Je kan in jouw situatie ook de methode toString() overriden en de gewenste waarde terug laten geven, dan hoef je niet te typecasten.
Pagina: 1