Invocar un método estático usando la reflexión

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 .

 // 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.

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

 Clase klass = ...;
 Método m = klass.getDeclaredMethod (methodName, paramtypes);
 m.invoke (null, args)
 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; } }