我最近在研究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/