С риском повышения уровня рекурсии я хотел бы ответить, хотя вы ссылаетесь на мой ответ по этой ссылке.
Это недоразумение легко сделать из-за нашего интуитивного понимания рефлексии как обращения к взгляду внутрь. И это, безусловно, важный аспект рефлексии в программировании - например, в Ruby у нас есть такие методы, как instance_of, позволяющие объектам задавать вопросы о себе во время выполнения.
Но взгляните на определение отражения в Википедии :
отражение - это процесс, с помощью которого
компьютерная программа может наблюдать и
изменить свою собственную структуру и
поведение.
Как видите, рефлексия - это больше, чем просто самопроверка во время выполнения. Это также возможность изменить поведение во время выполнения. Повторное открытие класса также называется «исправление обезьян». Вы можете прочитать больше об этом здесь .
Патч обезьяны - это способ
расширить или изменить код времени выполнения из
динамические языки без изменения
оригинальный исходный код.
Этот процесс также упоминается как:
- Партизанский ямочный ремонт
- Расширение ранее объявленных классов
- Открытие классов
- Динамический фанк
- угон
- утка штамповка
- метод Swizzling