Как мне кажется, лучше объяснить на примере, и ни один из ответов, похоже, не делает этого ...
Практическим примером использования отражений может быть языковой сервер Java, написанный на Java, или языковой сервер PHP, написанный на PHP, и т. Д. Language Server предоставляет вашим IDE такие возможности, как автозаполнение, переход к определению, контекстная помощь, подсказки и многое другое. Чтобы все имена тегов (слова, которые могут быть автоматически заполнены) совпадать при нажатии, скажем, TAB и отображать все подсказки, языковой сервер должен проверять все, что касается класса, включая его документ. блоки и частные участники. Для этого нужно отражение указанного класса.