java - java反射可以将不在java源文件中的方法添加到类文件中吗?

标签 java maven reflection intellij-idea

我最近在研究java的深度学习的源代码。有这么一个类NeuralNetConfiguration其中有大量的领域都需要 getter 和 setter。然而,NeuralNetConfiguration.java 源代码没有提供任何内容。

当我在 IntelliJ 中打开这个项目时,按住 Ctrl 键单击该类的用法,这些方法大多类似于 NeuralNetConfiguration.getNInput() 或 NeuralNetConfiguration.getKernelSize(),IDE 将我定向到已编译的类文件,其中所有getter 是为此类中的每个字段定义的。

只是想知道这是如何完成的,因为我是 java 的新手。我发现关于 java Reflect 的帖子表明,除非您编写自己的类加载器,否则 Reflect 不能将方法添加到类的方法中。我检查了 java 项目的深度学习,我认为他们没有这样做。

时不时让我烦恼的是,IntelliJ 开始报告那些 getFields 方法无法解析的错误,因为它们根本不在源文件中,特别是在我使用 IntelliJ 而不是使用 mvn 命令构建项目之后线。

最佳答案

神奇的事情发生在类上的 @Data 注释上。此注释来自Project Lombok 。某处可能有一个注释处理器 Hook 编译过程并生成这些方法。

关于java - java反射可以将不在java源文件中的方法添加到类文件中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31652918/

相关文章:

java - Docker 镜像构建,但不运行

java - 为gridlayout中的JButton添加点击事件-JAVA

java - Elasticsearch - 在查询中将数组作为参数传递

maven - Ant BuildException 构建Hadoop 2.2.0 报错

java - 如何在 CLI 上运行 maven 生成的 jar

c# - 如何使用反射获取属性,同时忽略继承的属性?

java - 如何在 Debug模式下启动 Apache Zeppelin?

maven - 排除Maven依赖项

c# - 反射(reflection)动态类型以判断它是否是动态类型,首先

c# - 通过反射删除路由事件处理程序?