Pequeño ejemplo de como invocar métodos java a partir del nombre de la clase, nombre del método, tipos de parámetros de entrada y salida.
import java.lang.reflect.Method;
public class Start {
/*Para el correcto funcionamiento de este ejemplo debe existir un paquete y una clase llamadas "class_.Test", esta clase debe tener un atributo llamado "nombre" de tipo "String" con un método llamado "getNombre" y otro llamado "setNombre"*/
public static void main(String[] args) throws Throwable {
Class tiposParametrosDelMetodoSetter[] = {Class.forName("java.lang.String")};
Class claseVO = Class.forName("class_.Test");
Object objetoClaseVO = claseVO.newInstance();
Object[] valoresParametrosDelMetodoSetter = {"test setter string"};
String nombreMetodoSetterPorNombreAtributo = "set"+capitalize("nombre");
Method metodoSetter = claseVO.getDeclaredMethod(nombreMetodoSetterPorNombreAtributo, tiposParametrosDelMetodoSetter);
metodoSetter.invoke(objetoClaseVO, valoresParametrosDelMetodoSetter);
System.out.println("Get desde casting al objeto"+((Test) objetoClaseVO).getNombre());
String nombreMetodoGetterPorNombreAtributo = "get"+capitalize("nombre");
Method metodoGetter = claseVO.getDeclaredMethod(nombreMetodoGetterPorNombreAtributo, null);
String salida = (String)metodoGetter.invoke(objetoClaseVO, null);
System.out.println("Get desde invoke del getter"+salida);
}
public static String capitalize(String s) {
if (s == null || s.length() == 0)
return s;
else
return s.substring(0, 1).toUpperCase() + s.substring(1);
}
invocación de métodos
Etiquetas:
java