reflexion reflect method example ejemplos java reflection

reflect - Llamada de función dinámica de Java



reflection java stack overflow (2)

Tengo una matriz de cadenas que contiene nombres de métodos en la clase yyyyyy

En la clase xxxxxx estoy haciendo una instancia de yyyyyy (digamos obj ). Ahora puedo llamar a obj.function_name() , excepto que quiero leer function_name de String Array en un bucle. es posible?


Es posible usar la reflexión, aunque probablemente debería cuestionar un poco su diseño si necesita ese tipo de comportamiento. Class.getMethod toma una String para el nombre del método y devuelve un objeto Method , que luego puede invocar .invoke on para llamar al método

Estas páginas de Javadoc deberían ser útiles:

Código de muestra (suponiendo que los métodos de yyyyyy toman un argumento int , solo para mostrar el paso del argumento):

yyyyyy obj = new yyyyyy(); String[] methodNames = {"foo", "bar", "baz"}; for(String methodName : methodNames) { Method method = Class.forName("yyyyyy").getMethod(methodName, new Class[] {int.class}); method.invoke(obj, 4); // 4 is the argument to pass to the method }


Puedes, usando la reflection . Se hace llamando a Yyyy.class.getMethod("methodName").invoke(someArgs)

Tendría que manejar una serie de excepciones, y su método debe ser public . Tenga en cuenta que las convenciones de codificación Java prefieren methodName a method_name .

Sin embargo, usar la reflexión debería ser el último recurso. Deberías estar usando más técnicas orientadas a objetos.

Si constantemente necesita funciones similares, tal vez pueda ver un lenguaje dinámico que se ejecuta en la plataforma Java, como groovy