Ho un metodo statico in qualche codice legacy, che viene chiamato da più client. Ovviamente non ho opzioni per sovrascriverlo o modificare il comportamento tramite l'iniezione di dipendenza. Non sono autorizzato a modificare la classe esistente.Come modificare il comportamento del metodo attraverso la riflessione?
Quello che voglio fare ora è cambiare il comportamento (quel metodo - con la stessa firma e tipo di ritorno) usando il riflesso.
È possibile? In caso contrario, qualche schema di progettazione può salvarmi?
Grazie!
MODIFICA: C'è una certa confusione su cosa posso modificare/modificare. Non posso modificare alcuna classe/metodo esistente, ma posso aggiungere più classi al progetto. Il meglio che posso fare con le classi esistenti è annotarle. Tutto ciò per evitare di rompere qualsiasi cosa nel codice esistente - il che significa un ciclo completo di test per un grande progetto.
MODIFICA 2: java.lang.Instrumentation non è disponibile per Android - oppure suona bene!
Perché la riflessione? –
Non sei autorizzato a cambiarlo, ma sei autorizzato a modificarlo tramite la riflessione? Sembra molto più rischioso. – Keppil
Penso che questo finirà in un incubo di manutenzione. Il codice giace a chiunque legga. Vai e ottieni l'approvazione per cambiare classe. – SpaceTrucker