Method[] metodos = miClase.getMethods();
En java podemos acceder a los métodos de una clase utilizando lo que se conoce como ‘Java Reflection‘. A partir de una clase, podremos acceder a todos los métodos que tenga declarados como ‘públicos‘.
1 – Cómo obtener todos los métodos de una clase
Partiendo de un objeto ‘Class‘ podremos obtener un listado con todos los métodos declarados públicos de la siguiente manera:
1 Class miClase = ..... // Obtenemos la clase2 Method[] metodos = miClase.getMethods();
Con esto habremos obtenido un array que contiene la refencia a cada uno de los objetos ‘Method‘ declarados públicos en la clase.
2 – Obtener un método del que conocemos su nombre
También podríamos querer obtener un método específico del que conocemos su nombre. Para ello debemos hacer:
1 Class miClase = ..... // obtener la clase2 Method metodo = miClase.getMethod('nombre_metodo');
Con esto almacenaremos en ‘metodo‘ una referencia al Method ‘nombre_metodo‘ que está dentro de la clase ‘miClase‘.
En caso de que el método no existiera en la clase se lanzaría un excepción del tipo ‘NoSuchMethodException‘.
3 – Cómo saber que tipo de parámetros tiene un método
Si tenemos un objeto ‘Method‘ cargado, podremos saber que tipo de parámetros tiene utilizando el siguiente método:
1 Method miMetodo = MiClase.getMethod("test");2 Class[] parametros = miMetodo.getParameterTypes();
Con esto tendríamos un array con una referencia al tipo de parámetro de cada parámetro que estuviese definido en el método ‘miMetodo‘.
4 – Cómo invocar un método
Si tenemos un objeto de tipo ‘Method‘ podremos hacer una llamada al método que referencia de la siguiente forma:
1 String param = "prueba";2 Method miMetodo = MiClase.getMethod("test");
4.1 – Llamada al método con un parámetro
1 Object result = miMetodo.invoke(objeto,param);
Con esto lo que se haría sería una llamada al método ‘test‘, que está declarado como público en la clase ‘MiClase‘ y le estaríamos pasando un parámetro ‘param‘ en la llamada. El método ‘test‘ se ejecutaría sobre el objeto ‘objeto‘ previamente creado, guardando el resultado devuelto por el propio método. Es decir, haciendo esto es como si estuvieramos haciendo:
1 objeto.test(param);
4.2 – Llamada al método con N parámetros
Si el método necesitase más parámetros deberíamos añadirlos a continuación del objeto, separados por comas, de la siguiente manera:
1 Object& result = miMetodo.invoke(objeto,param1,param2,param3);
que equivaldría a:
1 objeto.test(param1,param2,param3);
4.3 – Llamada al método sin parámetros
Si el método no recibiese ningún parámetro deberíamos hacer la llamada así:
1 Object result = miMetodo.invoke(objeto);
que equivaldría a:
1 objeto.test();
El método ‘invoke‘ permite pasar tantos parámetros como sean necesarios. El número y tipo de parámetros dependerá de cómo esté definido el método al que se está invocando.
Deja tu comentario