[Megoldva] Objektum típusa

Fórumok

Sziasztok!

Van egy absztrakt osztályom, amiből két másik osztályt származtattam.
Legyen az absztrakt osztály neve: BaseClass
A másik két osztály neve: ClassA, ClassB

Az absztrakt osztály definiál egy függvényt, aminek a bemenő paramétere egy BaseClass objektum.
Természetesen ez a gyakorlatban majd vagy ClassA vagy ClassB lehet.

Nos a ClassA osztályon belül, amikor implementálom a függvényt, fontos lenne eldöntenem, hogy aki meghívta a függvényt az ClassA vagy ClassB objektumot adott-e át.


    @Override
    public void foo(BaseClass anObject) {
        if (typeof(this) == typeof(anObject)) {
            // do something
        } else {
            // do something else
        }
        // ....
    }

Szóval ezt szeretném megvalósítani, de nem tudom, hogyan kell java-ban.

Hozzászólások

Halvány emlékeim között dereng, hogy létezik egy

instanceof

operátor, itt találhatsz példát a használatára.

--
Nagyimami

Számomra furcsa, hogy az ősnek tudnia kell a gyermek osztályokról. Igy ugye utólag csak az ős módosításával csinálhatsz ClassC-t. Nem lehet "lefelé" (a gyerek osztályokba) tolni a függvény által végzett teendőket? Mi a konkrét példád? Nem kötözködni akartam csak érdekel :). Egyébként a barátod az 'instanceof' operátor:


if (anObject instanceof ClassA) 

Az ősnek nem kell tudnia a leszármazott osztályokról semmit!

Én azt írtam, hogy a BaseClass egy absztrakt osztály, és a foo függvényt a leszármazott osztályokban implementálom. Tehát konkrétan a ClassA osztályban csinálom ezt a manipulációt.

Azt vizsgálom, hogy a bejött objektum típusa azonos-e a "this" típusával, vagyis ClassA-val.

Javaslok valamit. Az instanceof szopás elkerülésére inkább override-olj.


public void foo(ClassA o)
{
    //dosomething
}

public void foo(ClassB o)
{
    //dosomething
}

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.