在这种情况下,反射将无济于事,因为您需要解析代码(在这种情况下为 Java)并按照您的方式解释。因此,您需要构建文件的 AST。
AST(抽象语法树)可以使用Eclipse JDT在 Java 中构建。在Maven 中央:
<dependency>
<groupId>org.eclipse.jdt</groupId>
<artifactId>org.eclipse.jdt.core</artifactId>
<version>3.12.2</version>
</dependency>
Eclipse JDT 是一种文档模型,可以类比为 DOM 树,通过 DOM 树,您可以访问 XML 的元素、属性等。AST 具有相同的范围,您可以访问例如类名称或该类的方法,为每个方法提取参数名称和类型,而无需基于该类实例化对象。通过 JDT 可以访问文档或注释等其他人工制品。
可以应用反射,以防万一您将类加载到某个类加载器上,即便如此,仍有一些信息,如文档或参数名称,您无法通过反射访问。
一个好的开始是阅读这篇手帖:http ://www.vogella.com/articles/EclipseJDT/article.html#jdt
可以使用我在此答案上发布的代码来完成一个简单的开始