отражение является частью метапрограммирования.
Метапрограммирование - это метод программирования, при котором компьютерные программы имеют возможность обрабатывать программы как свои данные. Это означает, что программа может быть разработана для чтения, генерирования, анализа или преобразования других программ и даже для изменения во время работы.
Итак, концепция отражения такова, как мы видим свое отражение в зеркале: мы можем видеть вещи, которые мы не могли видеть без него, такие как: наши волосы, наши губы, язык и т. Д.
короче говоря, если метод или класс вызывают этот материал отражения, он может видеть объекты вне его знаний, такие как: переменные экземпляра, список методов, которые имеет класс, и другие свойства, которые класс назвал этим методом.
это полезно, когда мы делаем метапрограммирование. так как метод или класс должны знать о вещах, находящихся за пределами их (или даже писательского) знания.
конкретный пример:
скажем, вода и чашка. Если вы хотите запрограммировать физику воды, чтобы она соответствовала чашке, есть много способов. Допустим, вы работаете со 100 другими разработчиками и не знаете, с каким контейнером они придут (а у кого-то может получиться озеро или даже река), и вы выбираете стиль метапрограммирования. у вас есть класс воды и классная чашка. Ваш класс воды должен знать о свойствах чашки, таких как: максимальный объем, вес, изгибы или даже максимальная / минимальная температура.
результат: вам не нужно будет вставлять эту информацию в качестве параметров всякий раз, когда кто-то вызывает класс воды, так как может быть трудно отследить, растет ли их число.
(я не уверен, что это достаточно хороший пример и объяснение, поэтому, пожалуйста, прокомментируйте лучший вариант, если он вам в голову пришёл)