Avatar billede cli Nybegynder
03. juli 2001 - 08:40 Der er 1 løsning

dynamisk cast??

Jeg har en base klasse, jeg ved der bliver arvet
fra den, men jeg ved ikke af hvem endnu. Imidlertid
vil jeg gerne i en base klasse metode lave et callback
til sub klassen. Det går også fint sålænge jeg kender
sub klassen, men hvad gør jeg når sub klassen er ukendt?

Jeg havde umiddelbart troet at det ikke var nødvendigt
at caste:
((SubClass)o).baseCall( this );
og altså nøjes med at skrive:
o.baseCall( this );

Her er lidt kode, og lidt output:

package callbacktosubclass;

public class BaseClass {

    public BaseClass() {
        System.out.println(\"BaseClass::constructor\");
    }

    protected void baseCall( Object o ) {

        System.out.println(\"BaseClass::baseCall()\");
        System.out.println( o.getClass().getName() );

        // a callback to the SubClass
        ((SubClass)o).baseCall( this );       
    }
}

package callbacktosubclass;

public class SubClass extends BaseClass {

    public SubClass() {
        System.out.println(\"SubClass::constructor\");
        super.baseCall( this );
    }

    protected void baseCall( Object o ) {
        System.out.println(\"SubClass::baseCall()\");
        System.out.println( (o.getClass()).getName() );
    }
}

package callbacktosubclass;

public class Main {

    public Main() {
    }

    public static void main( String[] args ) {

        SubClass s = new SubClass();
    }
}

BaseClass::constructor
SubClass::constructor
BaseClass::baseCall()
callbacktosubclass.SubClass
SubClass::baseCall()
callbacktosubclass.SubClass
Avatar billede cli Nybegynder
03. juli 2001 - 08:51 #1
Ja ok -- min baseCall skal selvfølgelig
tage BaseClass som parameter.

sorry about the spam
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester