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 8参数名称相关推荐

  1. java运行时参数_运行时的Java 8参数名称

    java运行时参数 Java 8将引入一种更容易的方法来发现方法和构造函数的参数名称. 在Java 8之前,找到参数名称的方法是在编译阶段打开调试符号,这会在生成的类文件中添加有关参数名称的元信息,然 ...

  2. java能调用python吗_如何使用运行时在Java中调用python程序 - java

    我想用来自Java的参数调用python程序.但是我的输出是空白.代码在这里. Python代码在这里: import sys print(sys.argv[1]) Java代码在这里: public ...

  3. java lang jar_在运行时,Java jar返回java.lang.NoClassDefFoundError

    唉,我已经搜索了我的问题的解决方案,包括here和here,但无济于事. 所以情况是我有一个名为bin的文件夹,其中包含我的所有类文件,包括ImpulseResponseFunction.在另一个名为 ...

  4. Dapr 知多少 | 分布式应用运行时

    Intro Dapr 官方团队已于最近(2021.1.17)正式发布Dapr v1.0,Dapr已正式生产可用,可以部署到自托管环境或 Kubernetes 集群.对于绝大多数开发者来说,想必对Dap ...

  5. Windows Java JavaFX IntelliJ IDEA 开发环境搭建 创建工程 编译运行 打包分发 自定义运行时

    博文目录 文章目录 本文说明 JavaFX 简单说明 JavaFX 版本说明 JavaFX 与 JDK 的关系 JavaFX 与 JDK Modular (JDK 9 模块化系统) JavaFX 模块 ...

  6. java运行时_java编译时与运行时概念与实例详解

    Java编译时与运行时很重要的概念,但是一直没有明晰,这次专门博客写明白概念. 基础概念 编译时 编译时顾名思义就是正在编译的时候.那啥叫编译呢?就是编译器帮你把源代码翻译成机器能识别的代码.(当然只 ...

  7. Java 面试题问与答:编译时与运行时

    在开发和设计的时候,我们需要考虑编译时,运行时以及构建时这三个概念.理解这几个概念可以更好地帮助你去了解一些基本的原理.下面是初学者晋级中级水平需要知道的一些问题. Q.下面的代码片段中,行A和行B所 ...

  8. Frida Hook Android App 进阶用法之 Java 运行时

    FridaHookAndroid 本文旨在覆盖使用 Frida 对 Android App 进行 hook 的绝大多数场景.文章提到的所有代码以及被测 App,详见:https://github.co ...

  9. 【转】Java 面试题问与答:编译时与运行时

    在开发和设计的时候,我们需要考虑编译时,运行时以及构建时这三个概念.理解这几个概念可以更好地帮助你去了解一些基本的原理.下面是初学者晋级中级水平需要知道的一些问题. Q.下面的代码片段中,行A和行B所 ...

最新文章

  1. keycloak mysql_Keycloak换mysql存储详细步骤
  2. appium 3 跑起来
  3. vue class与style绑定
  4. Hadoop Yarn REST API未授权漏洞利用挖矿分析
  5. 韩信大招:一致性哈希
  6. 原创:PHP乱码怎么办?五种方法彻底解决PHP乱码问题
  7. (57)FPGA条件选择无优先级(case)
  8. linux嵌入式移植培训,达内嵌入式培训大讲堂之Linux系统移植
  9. python绘制函数x^2+y^2的3D图像
  10. 工作遇到问题:通过命令如何控制程控电源的第二个通道
  11. 色彩构成与搭配——色彩的设计
  12. I2C通讯常见问题汇总
  13. 【区块链108将】千方基金点付大头:投资区块链,不要让过往认知限制你的想象
  14. 【Kotlin】FarawayPlayer
  15. Visual Studio(VS)2013使用教程
  16. 2015年自我激励及2014年的总结
  17. 基于python获取雅虎金融股票数据及相关可视化操作
  18. 图形学/OpenGL/3D数学/Unity
  19. 吴军《数学之美》第二版阅读整理
  20. 134个治病小偏方,从此不用去医院 - 健康程序员,至尚生活!

热门文章

  1. Invalid character found in the request target. The valid characters are defi
  2. python怎么用for循环找出最大值_用for循环语句写一个在输入的十个数字中求最大和最小值的python程序应该怎么写?...
  3. internet地址java表示
  4. (转)es 聚合查询并返回每个组的数据
  5. centos上安装jdk
  6. spring(1)Spring之旅
  7. how to build a paper's architecture?
  8. 单列集合List的实现类
  9. xml json 比较_JSON和XML:它们如何比较?
  10. 光缆故障测试_简单的测试可以防止最严重的故障