0

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.

Damien-Amen
  • 7,232
  • 12
  • 46
  • 75

0 Answers0