В Java это в основном способ создания экземпляра класса, не зная об этом заранее. Скажем, вы хотите, чтобы пользователь мог изменять файл конфигурации, добавляя класс, который он хочет использовать в вашей программе (скажем, у вас есть многочисленные реализации некоторого интерфейса). С помощью отражения вы можете создать объект на основе только его имени, сигнатуры метода и т. Д. , а затем приведите его к вашему интерфейсу.