Invocar un método estático usando la reflexión
Quiero invocar el main
método que es estático. Obtuve el objeto de tipo Class
, pero no puedo crear una instancia de esa clase y tampoco puedo invocar el static
método main
.
Aceptado
// 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 de uso privado getDeclaredMethod()
en lugar de getMethod()
. Y llame setAccessible(true)
al objeto del método.
Del Javadoc de Method.invoke():
Si el método subyacente es estático, entonces se ignora el argumento obj especificado. Puede ser nulo.
¿Qué pasa cuando tú
Clase clase = ...; Método m = klass.getDeclaredMethod(methodName, paramtypes); m.invocar (nulo, argumentos)