实现AnnotationMetadata是基于ASM而不是Java Reflection?是否可以加快从注释解析元数据的速度?

最佳答案

重新实现注释处理而不使用内置的Reflection工具的典型动机是为了获得有关缺少类的更多鲁棒性,因为一旦注释引用了缺失的类型,即使该注释与您要查询的那个。

一个实现不可能快于另一个实现,因为它们基本上在做相同的事情,即根据相同的形式规则given by the Java Virtual Machine Specification处理字节数组。如果对同一程序元素进行多次查询,则唯一显着的效果可能是共享先前评估的注释。但是,这取决于其他代码所使用的框架,效果是否是肯定的(显然,如果所有代码都使用相同的框架,则将是有益的)。

10-04 10:52