Empecemos por lo básico.
En Java no vas a poder pasar punteros a funciones como tal.
En Java se pasan objetos o valores nativos, que no vienen al caso ahora.
Cuando una función recibe un "callback", del tipo que sea, lo que recibe es un objeto con (generalmente) 1 método que será llamado. Por ejemplo, una función podría recibir como parámetro una interfaz como esta:
Y esta sería la clae que almacena el "callback":
Eso es todo, no hay más. En Java todo es muy simple, solo hay que adaptarse a ello.
Además, en Java 8, se ha agregado una sintaxis para los callbacks de este estilo. Antes, se hacía así una "lambda":
Ahora, con Java 8:
En Java no vas a poder pasar punteros a funciones como tal.
En Java se pasan objetos o valores nativos, que no vienen al caso ahora.
Cuando una función recibe un "callback", del tipo que sea, lo que recibe es un objeto con (generalmente) 1 método que será llamado. Por ejemplo, una función podría recibir como parámetro una interfaz como esta:
Código (java) [Seleccionar]
interface Callback {
void doIt();
}
Y esta sería la clae que almacena el "callback":
Código (java) [Seleccionar]
public class Test {
private Callback callback;
public Test(Callback callback) {
this.callback = callback;
}
public callIt() {
callback.doIt();
}
}
Eso es todo, no hay más. En Java todo es muy simple, solo hay que adaptarse a ello.
Además, en Java 8, se ha agregado una sintaxis para los callbacks de este estilo. Antes, se hacía así una "lambda":
Código (java) [Seleccionar]
Test test = new Test(new Callback(){
public void doIt(){
// Code
}
});
Ahora, con Java 8:
Código (java) [Seleccionar]
Test test = new Test(() -> { /* Code */ });