Gå til innhold

Hvorfor kaster virker ikke denne?


Anbefalte innlegg

 public String skrivUt(){
  String utskrift = "";
  Node loper = forste;
  while(loper != null){
    Person innhold = (Person)loper.getInfo();
    utskrift += innhold.toString();
    loper = loper.neste;
  }
  return utskrift;
 }

 

Jeg får: java.lang.ClassCastException

 

Jeg vet at det er

Person innhold = (Person)loper.getInfo();
    utskrift += innhold.toString();

som ikke funker. Men jeg har brukt samme opplegg før, og forstår ikke hva som er feil. Noen som ser?

 

Takker

Endret av Vonbo
Lenke til kommentar
Videoannonse
Annonse

Casting spesifiserer hvilken klasse et objekt er av. Det brukes typisk når en henter ut et objekt av en eller annen container eller liste. loper.getinfo() returnerer antagelig et objekt av klassen Object. Det du prøver å si til Java er:

 

"Dette objektet, som i utgangspunktet er av klassen Object (superklasse som alle klasser arver fra), er egentlig et Person-objekt. Behandle det som et Person-objekt fra nå av." Men hvis det faktisk ikke er et Person-objekt du har hentet ut vil du få den feilen du skisserer.

 

Mao. ligger det minst et objekt i loper som ikke er Person eller arver fra Person.

 

Alternativt har du nerfet metodedeklarasjonen til Node.getInfo(). Hvis denne metoden returnerer noe annet enn Person eller Object (en String kanskje?) kan du også få denne feilen.

Endret av dostojevski
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...