Sto provando a inviare oggetti per separare il metodo in base alla loro sottoclasse.Come richiamare un metodo java basato su un tipo di sottoclasse?
Ad esempio, consideriamo quei 2 oggetti
class A extends I {}
class B extends I {}
e il metodo
void dispatch(I i) {}
in dispatch()
, vorrei richiamare un metodo in base al tipo di i
. Quindi se i
è effettivamente di tipo A, verrà chiamato il metodo handlerA(A a)
. Se è di tipo B, verrà chiamato handlerB(B b)
e così via ... Ho provato con l'overloading del metodo, ma suppongo che non funzioni in questo modo
qual è il modo migliore per raggiungere questo obiettivo? Vorrei evitare di usare if/else ...
Grazie in anticipo,
edit: non riesco a modificare alcuna di queste classi.
Questo presuppone che 'handler()' senso avere su 'A' e' B'. Se questo è il caso, la tua risposta è corretta al 100%. –
Kevin: hai ragione, lo fa. Ma solo tipo di. Continuo a pensare che all'OP manchi il concetto di polimorfismo sottostante, e anche se il mio suggerimento esatto non è adatto, penso che alcuni schemi di una funzione/proprietà in "I" siano la strada da seguire. –
se handler() è in I, e sia A che B implementano I, ma non ha senso avere handler() su entrambi, penso che ci siano ** probabilmente ** altri problemi. – Carl