Ricordo che in linguaggio C si poteva richiamare una funzione invocandola attraverso un puntatore “che puntava” proprio a quella funzione.
In java esistono solo puntatori, è completamente fatto da puntatori che taluni arrivano a dire che questi non esistono affatto in Java.
Vogliamo definire un array di funzioni..
..ecco come fare ( http://www.rgagnon.com/javadetails/java-0005.html )
public class testf {
public static void main(String args[]){
Command[] commands = new Command[3];
commands[0] = new aCommand();
commands[1] = new bCommand();
commands[2] = new cCommand();
commands[0].exec();
commands[1].exec();
commands[2].exec();
}
}
class aCommand implements Command {
public void exec() {
System.out.println("a");
}
}
class bCommand implements Command {
public void exec() {
System.out.println("b");
}
}
class cCommand implements Command {
public void exec() {
System.out.println("c");
}
}
interface Command {
void exec();
}
L’output del programma sarà:
a
b
c
Piu’ che un trucco e un famoso e fondamentale pattern : il command pattern. Ma credo tu lo sappia, vista la scelta di nomi
E invece No: ci “scivolo” su “alla grande”.. P.S: studiare i pattern.
P.P.S: perchè all’università (ing.informatica.. mica accademia del pane.. non c’è stato mai UN professorone che abbia citato la parola “pattern” ??)