Preface
In versions before Java 8, after the code is compiled into a class file, the types of method parameters are fixed, but the parameter names are lost. This is in stark contrast to dynamic languages that rely heavily on parameter names. Compared. Now, Java 8 begins to retain parameter names in class files, which brings great convenience to reflection.
Example:
public class GetRuntimeParameterName { public void createUser(String name, int age, int version) { // } public static void main(String[] args) throws Exception { for (Method m : GetRuntimeParameterName.class.getMethods()) { System.out.println("----------------------------------------"); System.out.println(" method: " + m.getName()); System.out.println(" return: " + m.getReturnType().getName()); for (Parameter p : m.getParameters()) { System.out.println("parameter: " + p.getType().getName() + ", " + p.getName()); } } } }
Method.getParameters is a new method for 1.8, which can obtain parameter information, including parameter names.
The createUser parameters output by the above code are as follows:
method: createUser return: void parameter: java.lang.String, name parameter: int, age parameter: int, version
The parameter names are compiled into the class file, replacing the meaningless arg0, arg1...# in the earlier version.
##For many frameworks that rely on parameter names, the code can be further simplified:@Path("/groups/:groupid/:userid") public User getUser(String groupid, String userid) { ... }When there is no parameter name, annotations must be added:
@Path("/groups/:groupid/:userid") public User getUser(@Param("groupid") String groupid, @Param("userid") String userid) { ... }Unfortunately, the option to retain parameter names is turned on by the compile switch javac -parameters, and is turned off by default. In Eclipse, you can open it through the Compiler option: Note: This function must compile the code into version 1.8 class. SummaryThe above is the entire content of this article. I hope the content of this article can bring some help to everyone's study or work. If you have any questions, you can leave a message to communicate. For more related articles on how to get parameter names in Java 8, please pay attention to the PHP Chinese website!