27. juni 2002 - 12:27Der er
4 kommentarer og 1 løsning
instanceOf
Hejsa
Jeg sidder og leger med lidt kode hvor jeg har en række objekter der nedarver fra den samme class og som bliver sendt rundt i systemet upcastet til den type. Når jeg så skal havde downcastet dem igen har jeg tænkt mig at bruge instanceOf til at identificere dem, men jeg kom til at tænke på om den operator er meget resourcekrævende? Altså det egentlige spøgsmål er om det bedre kunne betale sig at indføre fx et objektType int felt i grundclassen som jeg så kunne tjekke på? (Selvom det er en grim måde)
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.
hmm okay jeg tror jeg går for instanceof. I forhold til et int felt så kan man selvf. havde nogle static konstanter på rodklassen at tjekke udfra men jeg syntes stadigt det er mere uoverskueligt end instanceof. Jeg lader lige spørgsmålet stå åben i et øjeblik in case andre havde en holdning =)
Det vil være dumt at lave en høkerløsning med en int selv, da det næsten helt sikkert ikke vil gå hurtigere.
Men overvej lige først, om det overhovedet er nødvendigt at bruge instanceof?
Når du siger alle dine objekter arver fra den samme klasse kunne du jo være, at du kunne have en generel (evt abstract) metode på din parent-klasse, som du så overskriver i de enkelte klasser.
Eks:
public void gørNoget(Dyr dyr) { if (dyr instanceof Hund) ((Hund) dyr).gø(); else if (dyr instanceof Kat) ((Kat) dyr).miau(); }
Hvis du laver en metode giLyd() på Dyr-klassen, kan du i stedet have metoden
public void gørNoget(Dyr dyr) { dyr.giLyd(); }
giLyd()-metoden skal så overskrives for hund og for kat.
Hvis du gør ting, der minder om hinanden på de enkelte objekter, vil det være en pænere løsning
yup, men mine objekter skal kun indeholde information og der kan være temmeligt store variationer i hvad/hvor meget data de indeholder. Tak for svarene
(og også forskellige måder at dataene skal hentes ud fra, så et generelt interface duer ikke).
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.