Class.getMethod()
находит только открытые методы. Вам нужно Class.getDeclaredmethod()
.
Также вам нужно искать тип аргумента:
Method method = getClass().getDeclaredMethod(e.getActionCommand(), ActionEvent.class);
Я бы предпочел сделать это с помощью вспомогательного метода, подобного этому:
public static Method findMethodByNameAndArgs(final Class<?> clazz,
final String name, final Object... args) {
for (final Method method : clazz.getDeclaredMethods()) {
if (method.getName().equals(name)) {
final Class<?>[] parameterTypes = method.getParameterTypes();
if (parameterTypes.length == args.length) {
boolean matchArgs = true;
for (int i = 0; i < args.length; i++) {
final Object param = args[i];
if (param != null && !parameterTypes[i].isInstance(param)) {
matchArgs = false;
break;
}
}
if (matchArgs) return method;
}
}
}
throw new IllegalArgumentException(
"Found no method for name '" + name + "' and params "
+ Arrays.toString(args));
}