progAnd, scusami per il mostruoso ritardo ma la situazione mi fa uscire di testa.
Ti ringrazio per la risposta esaustiva, ma come hai detto anche tu, è evidente che la situazione potrebbe rtrasformarsi facilmente in un problema con variabili in crescita esponenziale.
Detto questo c'è da dire che ci sono anche altri problemi, Ad esempio, nelle applicazioni che abbiamo studiato e creato all'uni si utilizzava la classe javax,swing.Action. Per ogni azione ci creavamo una classe che estendeva AbstractAction e implementavamo il metodo action performed. Una volta create tutte le azioni, creavamo oggetti di queste classi e li inserivamo in ua mappa delle azioni. Ogni volta che avevamo bisogno , per un determinato componente swing , di settare un ascoltatore, chiamavamo sul componente il metodo setAction(javax.swing.Action a), e come parametro passavamo una delle azioni prelevate dalla mappa delle Azioni. Come puoi vedere il Parametro è un Action generico che potrebbe (in analisi statica) corrispondere ad una qualsiasi delle azioni da me create.tra le altre cose a priori creo tutte le istanze delle azioni da me create e le metto nella mappaAzioni, ma poi potrei non utilizzarne qualcuna, e quindi il controllo sull'istanza della classe che implementa l'action performed non avrebbe a questo punto senso :-(.......
Ho pensato ad un milione di soluzioni in questi giorni ma credo che per questo problema non esista soluzione.......:
1. Avviare l'applicazione ed analizzare tramite il metodo getListeners dei componenti swing, quali fossero effettivamente le azioni istanziate (ma l'avvio di un applicazione swing comporterebbe l'aprirsi del frame principale che è una cosa orrenda mentre sto eseguendo il mio tool!!, tra le altre cose non tutti i componenti swing vengono creati e settati con il solo frame principale)
2. Caricare tutte le classi della mia applicazione tramite un classloader da me creatoe analizzare il contenuto tramite la riflessione (ma non sono riuscito a trovare metodi più utili di quelli già forniti da JDT di Eclipse...)
sono in una situazione disperata perchè credo che la cosa sia umanamente impossibile da risolvere....

Rispondi quotando