В Java 8 вы можете сделать следующее:
import java.lang.reflect.Method;
import java.lang.reflect.Parameter;
import java.util.ArrayList;
import java.util.List;
public final class Methods {
public static List getParameterNames(Method method) {
Parameter[] parameters = method.getParameters();
List parameterNames = new ArrayList<>();
for (Parameter parameter : parameters) {
if(!parameter.isNamePresent()) {
throw new IllegalArgumentException("Parameter names are not present!");
}
String parameterName = parameter.getName();
parameterNames.add(parameterName);
}
return parameterNames;
}
private Methods(){}
}
Итак, для вашего класса Whatever
мы можем выполнить ручной тест:
import java.lang.reflect.Method;
public class ManualTest {
public static void main(String[] args) {
Method[] declaredMethods = Whatever.class.getDeclaredMethods();
for (Method declaredMethod : declaredMethods) {
if (declaredMethod.getName().equals("aMethod")) {
System.out.println(Methods.getParameterNames(declaredMethod));
break;
}
}
}
}
, который должен печатать [aParam]
, если вы передали аргумент -parameters
вашему компилятору Java 8.
Для пользователей Maven:
3.1
1.8
org.apache.maven.plugins
maven-compiler-plugin
${maven-compiler-plugin.version}
-parameters
true
-parameters
${java.version}
Для получения дополнительной информации см. следующие ссылки: