Parameter Names contains utility methods for fetching the parameter names for a method or constructor.
Java 8 added the ability to access the parameter names of a method or
constructor, but this only works if the code was compiled with the Java 8
version of javac
with the -parameters
option enabled. This utility
falls back to reading parameters from the debug symbols in the method
bytecode for classes compiled without the -parameters
option enabled.
Simply, pass java.lang.reflect.Method
or java.lang.reflect.Constructor
to
ParameterNames.getParameterNames
. For example:
Method method = ParameterNames.class.getMethod("getParameterNames", Executable.class);
List<String> parameterNames = ParameterNames.getParameterNames(method);
Parameter names are loaded in the following order:
- Java 8 reflection names created by
javac
with the-parameters
option - Bytecode debug symbols created by
javac
with the-g
option - Default name of
argN
whereN
is the index of the parameter starting from zero
<dependency>
<groupId>io.airlift</groupId>
<artifactId>parameternames</artifactId>
<version>1.0</version>
</dependency>
Parameter Names is released under the Apache License, Version 2.0.