Рефлексия (reflection)
Коротко: Рефлексия позволяет программе исследовать и изменять собственную структуру во время выполнения: запрашивать классы, методы, поля и аннотации, создавать объекты и вызывать методы, имена которых известны только во время выполнения.
Подробнее: Фреймворки активно используют рефлексию: контейнеры внедрения зависимостей (внедрение зависимостей), ORM, сериализаторы (сериализация) и тестовые фреймворки находят классы и методы по именам или аннотациям, не зная их при компиляции.
Подробности
Class<?> k = Class.forName("java.util.AСм. также: аннотации, внедрение зависимостей, сериализация, макросы