Pasar nombre de funcion como parametro de otra funcion en java

Iniciado por xGisKaRDx, 31 Julio 2014, 18:54 PM

0 Miembros y 1 Visitante están viendo este tema.

xGisKaRDx

Hola amigos, estoy aprendiendo java y me gustaria saber si puedo pasar una funcion como parametro de otra funcion de una manera sencilla, que no complique el codigo.

es decir hay algo parecido o equivalente en java a algo tan bonito como lo siguiente?:

Código (actionscript) [Seleccionar]


//La funcion a pasar
public function Hola():void{
  trace("Hola mundo");
}

//Esta funcion ejecuta la funcion pasada en su parametro
public function Saluda(parametro:Function):void{
   parametro();
}

//Ejecutamos la funcion "Saluda" pasandole como parametro el nombre de la funcion "Hola" sin parentesis
Saluda(Hola);



Resultado en consola "Hola mundo"


xGisKaRDx

Gracias por la respuesta, la verdad es que ese resultado ya lo habia encontrado buscando por internet, pero no acabo de entenderlo, al parecer de los varios ejemplos que aparecen el mas sencillo a simple vista es el de callable pero no acabo de comprender su funcionamiento.

Si alguien me puede poner un ejemplo practico seria de agradecer.

La idea es poder pasar funciones entre clases, osea si tengo una clase A y una clase B quiero poder pasarle la funcion de la clase A a la clase B para que esta la ejecute. y no me sirve pasar la referencia de la clase A con this porque de esta manera necesito saber de antemano el nombre de las funciones y estas pueden ser variables o estar metidas en un array de funciones.

jhonatanAsm

la clase reflection te brinda métodos para saber los nombres de parámetros, variables, métodos, etc. con el método getMethods() obtienes todos los métodos de una clase.

unos ejemplos en español:
http://www.javahispano.org/storage/contenidos/reflection.pdf
mi primer lenguaje fue ensamblador, tengo 60 años, y no creo que haya sido un error.

- La mayor complejidad de todas es hacer complejo algo que no lo es.

- El inteligente no es aquel que lo sabe todo sino aquel que sabe utilizar lo poco que sabe.