java运行时参数
Java 8将引入一种更容易的方法来发现方法和构造函数的参数名称。
在Java 8之前,找到参数名称的方法是在编译阶段打开调试符号,这会在生成的类文件中添加有关参数名称的元信息,然后提取复杂的信息,需要处理字节码。获取参数名称。
使用Java 8,尽管仍需要使用打开调试符号的编译步骤才能将参数名称输入类字节码中,但是此信息的提取更为简单,并且Java反射支持该信息,例如。 考虑一个简单的类:
public class Bot {private final String name;private final String author;private final int rating;private final int score;public Bot(String name, String author, int rating, int score) {this.name = name;this.author = author;this.rating = rating;this.score = score;}...
}
从理论上讲,遵循这些原则的代码应掌握上述构造函数的参数名称:
Class<Bot> clazz = Bot.class;
Constructor ctor = clazz.getConstructor(String.class, String.class, int.class, int.class);
Parameter[] ctorParameters =ctor.getParameters();for (Parameter param: ctorParameters) {System.out.println(param.isNamePresent() + ":" + param.getName());
}
参数是封装该信息的新反射类型。 在使用Java Developer Preview(b120)进行的测试中,我无法使它正常工作!
资源:
- http://openjdk.java.net/jeps/118
参考: all和其他博客中的JCG合作伙伴 Biju Kunjummen提供的Java 8参数名称在运行时 。
翻译自: https://www.javacodegeeks.com/2013/12/java-8-parameter-name-at-runtime.html
java运行时参数