Я бы просто процитировал # JLS7.7 здесь (отформатирован и классифицирован мной):
Отличается от доступа во время компиляции и доступа во время выполнения, Java SEПлатформа обеспечивает рефлексивный доступ через Core Reflection API (§1.4) .
Подробнее к вашему вопросу, относящемуся к категории Обычный модуль (module foo
) и Открытый модуль (open module bar
):
Обычный модуль
A Обычный модуль предоставляет отражающий доступ к типам только в тех пакетах, которые явно экспортированы или явно открыты (или оба).
Открытый модуль
Открытый модуль предоставляет отражающую способностьдоступ ко всем типам пакетов, как если бы все пакеты были открыты .
открытые пакеты модуля
Для кода вне открытого модуля отражающий доступ, предоставленный типам в открытых пакетах модуля (то есть всем пакетам в модуле), равен для всех типов в этих пакетах и всех членов этих пакетов.типы .
внутри модуля
Код внутри модуля имеет отражающий доступ ко всем типам и всем ихчлены, во всех пакетах в модуле .