View Full Version : [java] domanda da manuale che non ho ^_^"
LetBloodline
08-08-2007, 14:16
Devo fare un progetto in java ma è da parecchio che non lo prendo in mano e non mi ricordo una cosa che mi è fondamentale
Non mi ricordo come si passa una funzione come parametro per un'altra funzione, questione di sintassi facilmente risolvibile libro alla mano ma il libro non ce l'ho al momento :doh: quindi mi rivolgo a voi
Help plz T_T
Non mi ricordo come si passa una funzione come parametro per un'altra funzioneQuando si deve passare un "comportamento" si usano le interfacce o le classi astratte.
LetBloodline
08-08-2007, 14:30
devo fare una procedura da richiamare più volte dandogli funzioni diverse che dovrà usare al suo interno, del tipo:
public void programma (p, int[] a)
...
p( a );
..
devo fare una procedura da richiamare più volte dandogli funzioni diverse che dovrà usare al suo interno, del tipo:
public void programma (p, int[] a)
...
p( a );
..Definisci una interfaccia con il metodo che ti interessa. Al metodo che deve ricevere un "comportamento" passerai un oggetto che implementa la interfaccia. Ovviamente dovrai fare n classi per ogni operazione diversa.
AH AH! Stavolta non m'avete fregato!
Stavo scrivendo il solito papiro ma ho avuto l'accortezza di ricontrollare il forum prima di inviare! :Prrr:
Concordo, interfaccia.
interface Funzione { void compute(int...values); }
LetBloodline
08-08-2007, 15:08
davvero non c'è un metodo più facile e diretto? =/ mi sembra una cosa così seccante per fare una cosa piuttosto comune =/
davvero non c'è un metodo più facile e diretto? =/ mi sembra una cosa così seccante per fare una cosa piuttosto comune =/La via OOP è quella. Poi comunque non è così complicato e ci vengono in aiuto anche le inner-class.
Esempio:
public class Prova
{
public static void main (String[] args)
{
Func somma = new Func () {
public int oper (int a, int b) {
return a + b;
}
};
Func sottrazione = new Func () {
public int oper (int a, int b) {
return a - b;
}
};
System.out.println (eseguiOperazione (somma, 10, 12));
System.out.println (eseguiOperazione (sottrazione, 10, 12));
}
private static int eseguiOperazione (Func f, int a, int b)
{
return f.oper (a, b);
}
}
interface Func
{
int oper (int a, int b);
}(l'esempio è stupido ... lo so ma è per dare l'idea)
LetBloodline
09-08-2007, 11:37
grazie a tutti, molto chiaro l'esempio =)
vBulletin® v3.6.4, Copyright ©2000-2026, Jelsoft Enterprises Ltd.