运行时的Java 8参数名称

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值