On Sun, 13 Feb 2005 02:19:11 +0100, "bunallo" <nmnm@alala.com> wrote:
>Jeg har en vector "v" som kan være fyldt med 2 forkskellige objekter A og B.
>I nedestående eksempel er det forudsat at der allerede er blevet tilføjet
>elementer til denne vector.
>
>Brugeren skriver et tal "s" som input. Man undersøgere om dette tal er
>større end antallet af elementer i vektoren.
>
>Hvis det er et korrekt input så bliver elementet på index "s" hevet udad
>vektoren.
>
>Dernæst undersøges for om elmentet er en instans af fx A (udelader tilfældet
>med B i dette eksempel).
>Hvis dette evaluere til sand vil jeg gerne "caste" t til type A så jeg kan
>få adgang til A's metoder og variable. Men dette kan åbenbart ikke lade sig
>gøre.
Ikke på den måde i hvert fald. Jeg tror du kan få glæde af at læse
lidt om referencer. For eksempel:
http://mindprod.com/jgloss/reference.html
Eller mere generelt:
http://java.sun.com/docs/books/tutorial/java/index.html
Nu til din programstump:
>String s = args[0];
>int i = new Integer(s).intValue();
>if (i<= v.size()){
> Object t = v.get(i);
På dette tidspunkt er t en reference af typen Object til et objekt at
typen A eller B.
> if (t instanceof A){
Her ved vi så at t referer til et objekt af typen A. Det forsøger du
så at udnytte nedenfor.
> ((A)t);
Her forsøger du tilsyneladende at ændre typen af referencen, og det
kan man ikke. Java er et stærkt typet sprog og alle variabler vil have
den samme type hele tiden. Det du kan gøre i stedet for er at lave en
ny reference af den rigtige type, og lade den pege på samme objekt:
A a = (A) t;
Nu kan du få adgang til A's metoder og variable gennem referencen a.
>}
>}
>
>Håber nogen kan hjælpe!
Håber det hjalp
Venlig hilsen
Ole