Entra

View Full Version : Rimpiazzare classi in JAVA


oscarivan
28-01-2010, 16:38
Ciao,
ho un problema, ho un applicativo java funzionante, e adesso devo implementare lo stesso applicativo per altri mestieri.
Io quello che voglio fare e ereditare tutti i metodi e classi di quello vecchio cambiando solo piccoli path e azioni.
Esempio: ce un modulo che si chiama KeyboradKey, il quale estense già il JButton, questa classe viene chiamata dalla classe Keyboard, io volevo sapere se ce qualche metodo per far si, che io possa creare una nuova KeyboardKey dentro il nuovo progetto, che questa estenda quella vecchia, ma, che al momento in cui la classe keyboard chiami la keyboradkey, questa punti a quella nuova senza fare nessuna modifica sulla keyboardkey?
Lo so che è un po' complicato, ma se fosse possibile sarebbe ottimo per mantenere i due software allineati senza scrivere il codice due volte.

Grazie.

PGI-Bis
28-01-2010, 16:51
Non è particolarmente complicato ma si fa prima a provare che a farselo spiegare.

Il problema è scavalcare il "new". Lo fai con un ClassLoader. Devi delegare il caricamento della classe Keyboard ad un classloader personalizzato che quando rileva una richiesta per la classe KeyboardKey originale passa un diverso KeyboardKey.

Oppure puoi usare la "byte code instrumentation" (cioè cambi il comportamento della JVM).

Cerca "class loader delegation" o "byte code instrumentation", ci sono un tot di riferimenti. Bisogna scartabellare un po' di documentazione ma è ampiamente fattibile.