Итак, я знаю, что эта тема была сделана раньше, например. Java Reflection Performance, но мой конкретный вопрос заключается в том, что многие популярные библиотеки реализованы с помощью аннотаций и отражений (например, Gson, Jackson, Jaxb, hibernate search), Многие (если не все) библиотеки обеспечивают хорошую (или большую) производительность, даже если они используют отражение. Мой вопрос: как они это делают? Есть ли какие-то "трюки", чтобы знать или они просто используют прямое отражение, а беспокойства в спектаклях раздуты?
EDIT: Так, например, когда мы пишем: MyObject obj = new Gson(). FromJson (someInputStream, MyObject.class);
Я могу понять, как библиотека может внутренне кэшировать объекты Field, но мне кажется, что она должна постоянно отражать объект каждый раз, и ему нужно вызвать setter в каждом поле (отражательно) на основе проанализированного значения от json. Или есть какой-то способ заплатить (все) стоимость отражения только при запуске?
Я определенно заметил, что Gson/Jackson и т.д. имеют относительно большую начальную стоимость и после этого супер быстро. Поэтому, очевидно, мне интересно, если я напишу библиотеку, которая делает что-то смутно похожее, есть ли трюки, о которых мне нужно знать? Потому что, похоже, вы не можете уйти от некоторого количества отражения, при каждом вызове.