programming - reflexion java ejemplos
Invocar un método estático usando la reflexión (3)
Quiero invocar el método main
, que es estático. Obtuve el objeto de tipo Class
, pero no puedo crear una instancia de esa clase y tampoco puedo invocar el método static
main
.
Desde el Javadoc de Method.invoke ():
Si el método subyacente es estático, entonces se ignora el argumento obj especificado. Puede ser nulo.
Que pasa cuando tu
Class klass = ...; Method m = klass.getDeclaredMethod(methodName, paramtypes); m.invoke(null, args)
// String.class here is the parameter type, that might not be the case with you
Method method = clazz.getMethod("methodName", String.class);
Object o = method.invoke(null, "whatever");
En caso de que el método sea privado use getDeclaredMethod()
lugar de getMethod()
. Y llame a setAccessible(true)
en el objeto de método.
String methodName= "...";
String[] args = {};
Method[] methods = clazz.getMethods();
for (Method m : methods) {
if (methodName.equals(m.getName())) {
// for static methods we can use null as instance of class
m.invoke(null, new Object[] {args});
break;
}
}