В этой дискуссии об эффективности накладных расходов использования reflection, говорится:Какие во время выполнения оптимизаций теряются, если мы используем отражение
Использование отражения может привести к некоторым времени выполнения оптимизаций, которые будут потеряны. Например, следующий код весьма вероятно, будет оптимизирован с помощью виртуальной машины Java:
int x = 1; x = 2; x = 3;
Эквивалентного код с использованием Field.set *() не может.
Без отражения, какая оптимизация времени выполнения будет выполнена JVM?
Он просто запускает 'x = 3'. Всевозможные интригующие трюки, устранение кода операции и т. Д. Исчезают, когда вы бросаете отражение в микс. –
Это интересный вопрос, но я думаю, что он слишком широк для одного вопроса SO. – chrylis
Назначения x ничего не делают. Это локальная переменная, не многопотоковая, без параллелизма и может быть удалена. Если вы используете Field.set, другой поток может иметь доступ к переменной, поэтому его никогда нельзя оптимизировать. Вот что я думаю. –