我想编写一个工具,该工具使用编译 .class 文件作为输入。具体来说,我想从此类文件中阅读:

  • 方法,带注释
  • 方法参数,带注释

输入类文件可能会参考工具类路径中未使用的几种类型。没关系,我不需要对它们做任何事情,只需要阅读完全合格的类型名称作为字符串即可。我确实需要从注释中获取一些信息,但它们将在工具的类路径中。

我可以将其用于此目的的库吗?如果API有点像反射API,那就太好了,但不一定是。

有帮助吗?

解决方案

ASM http://asm.ow2.org/ 允许您从文件/输入流读取类,而无需加载该类。它使您可以看到在运行时未加载的注释。它也可以用于修改类字节代码/注释/方法等。

其他提示

Javap工具 JDK随附可能已经完成了您的追求。

你需要看两件事 Reflection APIDecompiler

我认为您可以使用春季扫描。

ClassPathScanningCandidateComponentProvider provider = new ClassPathScanningCandidateComponentProvider(true);
String basePackage = "org/springframework/samples/petclinic";
Set<BeanDefinition> components = provider.findCandidateComponents(basePackage);
for (BeanDefinition component : components) {
    System.out.printf("Component: %s\n", component.getBeanClassName());
}

有关更多信息,您可以查看春季 文档

我在用着 ASM 用于找出所有方法。

如果您可以访问生成.class文件,则 反射API 应该能够提供帮助。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top