Home > Java > javaTutorial > Method example of how to get parameter name in Java 8

Method example of how to get parameter name in Java 8

高洛峰
Release: 2017-01-22 11:03:34
Original
2169 people have browsed it

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());
   }
  }
 }
}
Copy after login

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
Copy after login

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) {
 ...
}
Copy after login

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) {
 ...
}
Copy after login

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:

Java 8中如何获取参数名称的方法示例

Note: This function must compile the code into version 1.8 class.

Summary

The 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!

Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template