Citat:
Cao Filipe, dugo te nije bilo... :)
Izvinjavam se, bio sam zauzet.
Citat:
haube ko ga je pozvao" odnosno da ne mora da se predaje nista, onda mozemo da kazemo da je tvoje resenje znatno kompleksnije od polaznog, "problematicnog" koda ovog tipa:
Zavisi šta želiš da dobiješ. „Jednostavnije“ rešenje koje navodiš zahteva da objekat prosleđen klasi B bude ili klase A ili neke koja je nasleđuje (tj. „? extends A“) da bi program mogao da se prevede. To bez potrebe tesno spreže A i B. Takav kod ne bih pisao ako baš ne moram.
„Komplikovanije“ rešenje ne zahteva da objekat klase A bude objekat nijedne posebne klase. Za čistunce, i poziv metoda foo2 može da se ubaci (inline) u bezimeni objekat. Onda je rešenje prostije, ali manje liči na tvoj primer odozgo.
Krajnji rezultat mogućnost da se pozove neki određeni metod u klasi „iznad“. Ali ovde objekti klasa A i B uopšte nisu spregnuti. B može da se koristi i sa nekakvom klasom C koja radi na isti način. Ovakav kod bih pisao, i to često činim.
Ovako se postiže cilj kog si čini mi se zadao — da metod iz klase B pozove određeni metod klase A. Ali ti si naveo još jedan uslov koji uopšte nije nužan, da prvo sazna koji je objekat pozvao a tek onda da se metod pozove.
Na sličnu temu:
http://en.wikipedia.org/wiki/Visitor_pattern
f