Почему AnnotationMetadata была основана на ASM, а не на отражении Java - PullRequest
0 голосов
/ 12 мая 2018

Реализация AnnotationMetadata была основана на ASM, а не на Java Reflection?Можно ли ускорить разрешение метаданных из аннотации?

1 Ответ

0 голосов
/ 14 мая 2018

Типичным мотивом для повторной реализации обработки аннотаций вместо использования встроенного средства отражения является получение большей устойчивости в отношении отсутствующих классов, поскольку встроенное средство обычно выходит из строя, как только аннотация ссылается на отсутствующий тип, даже если эта аннотация не относится к тому, который вы хотите запросить.

Маловероятно, что одна реализация быстрее другой, так как они в основном делают одно и то же, обрабатывая байтовые массивы в соответствии с теми же формальными правилами , которые указаны в спецификации виртуальной машины Java . Единственный заметный эффект может возникнуть в результате совместного использования ранее оцененных аннотаций, если выполняется несколько запросов для одного и того же программного элемента. Но тогда это зависит от того, какую платформу использует другой код, будет ли эффект положительным (очевидно, будет полезно, если весь код будет использовать одну и ту же платформу).

...