30
apr

Quando si programma in JAVA (ma lo stesso vale anche per altri linguaggi) può capitare di dover invocare in maniera dinamica un determinato metodo di una determinata classe. Tanto per fare un esempio banale, supponiamo di voler costruire una applicazione calcolatrice dove sono presenti due campi per inserire le cifre ed una combo con le 4 operazioni matematiche (somma, sottrazione, divisione, moltiplicazione). Quello che si vuole è che ad ogni elemento della combo sia associata una funzione che faccia, appunto, l’operazione di somma, sottrazione, divisione o moltiplicazione.

Il problema potrebbe essere risolto banalmente – ma oserei dire anche nella maniera più “brutta” – con un costrutto switch-case (if (somma) -> fai la somma else if (differenza) -> fai la differenza, …) oppure utilizzando una invocazione dinamica delle funzioni somma, sottrazione, divisione o moltiplicazione. Per i nostri scopi supponiamo di avere la classe OperazioniMatematiche nella quale sono state create le suddette funzioni come metodi pubblici.

Per invocare in maniera dinamica i metodi di tale classe, dunque, è sufficiente creare un array di Object relativi ai parametri da passare ai metodi (nella fattispecie si tratterà di due Double che saranno gli addendi per l’addizione,  i fattori per la moltiplicazione e così via), indicare il tipo di oggetti passati (Double), dichiarare il metodo ed invocarlo. Segue un pezzo di codice di esempio:

String nomeMetodo = "addizione"; //Esempio con l'addizione
OperazioniMatematiche opMat = new OperazioniMatematiche();
Double primaCifra = 1.0;
Double secondaCifra = 5.3;
Object paramsObj[] = {primaCifra, secondaCifra};
Class params[] = {Double.class, Double.class};
Class opMatClass = OperazioniMatematiche.class;
Method metodoDaInvocare = opMatClass.getDeclaredMethod(nomeMetodo, params);
Double somma = metodo.invoke(opMat, paramsObj)); // Somma = 6.3

,

2 Responses to “JAVA: invocare dinamicamente un metodo di una classe”

  • diggita.it scrive:

    JAVA: invocare dinamicamente un metodo di una classe…

    Quando si programma in JAVA (ma lo stesso vale anche per altri linguaggi) può capitare di dover invocare in maniera dinamica un determinato metodo di una determinata classe. Tanto per fare un esempio banale, supponiamo di voler costruire una applicazio…

  • Technotizie.it scrive:

    JAVA: invocare dinamicamente un metodo di una classe…

    Quando si programma in JAVA (ma lo stesso vale anche per altri linguaggi) può capitare di dover invocare in maniera dinamica un determinato metodo di una determinata classe. Tanto per fare un esempio……

Add reply