PDA

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

andbin
08-08-2007, 14:21
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 );

..

andbin
08-08-2007, 14:36
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.

PGI-Bis
08-08-2007, 14:41
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 =/

andbin
08-08-2007, 15:23
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 =)