I'm using 'Parameter' class in java 8 to get the name of the parameter.
public class ParamTest {
public void newMethodParamTest() {
try {
Method[] declaredMethods = ParamTest.class.getDeclaredMethods();
for (Method declaredMethod : declaredMethods) {
if (declaredMethod.getName().equals("testObj")) {
System.out.println(getParameterNames(declaredMethod));
break;
}
}
}
catch(Exception e) {
e.printStackTrace();
}
}
public void testObj(int num) {
System.out.println(num);
}
public static List<String> getParameterNames(Method method) {
System.out.println(method.getName());
Parameter[] parameters = method.getParameters();
List<String> parameterNames = new ArrayList<>();
for (Parameter parameter : parameters) {
String parameterName = parameter.getName();
parameterNames.add(parameterName);
}
return parameterNames;
}
public static void main(String[] args) {
ParamTest test = new ParamTest();
test.newMethodParamTest();
}
Now when I run this code the returned value is always arg0
. What I was expecting to see is num
.