为什么AnnotationMetadata基于ASM而不是Java Reflection

时间:2018-05-12 18:24:19

标签: java spring java-bytecode-asm

实现AnnotationMetadata是基于ASM而不是Java Reflection?是否可以加速从Annotation中解析元数据?

1 个答案:

答案 0 :(得分:0)

重新实现注释处理而不是使用内置反射工具的典型动机是获得关于缺少类的更强健性,因为内注工具通常在注释引用缺失类型时失败,即使该注释是与您要查询的那个无关。

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