Во-первых, в JLS такие термины, как видимость, могут иметь различное значение при применении к модулю компиляции, или к пакету, или к типу.
Некоторые ссылки, где термины определены в JLS:
Наблюдаемый :
Единица компиляции: §7.3 , предложение начинается "Хост-система определяет, какая компиляцияединицы измерения ".
Пакет: §7.4.3 , первый абзац.
Интуиция : элементы, участвующие в компиляции.
Visible :
Единица компиляции: §7.3 , предложение начинается с "Обычные единицы компиляции, видимые для M" - обратите внимание, что видимость определяется относительно модуля
Пакет: §7.4.3 , предложение начинается с "Пакет видим для модуля M" - снова относительно модуля.
Интуиция : элементы, которые можно наблюдать с точки зрения данного модуля с учетом requires
и exports
.
Доступно :
Кроме того, центральным новым понятием, поскольку JLS 9 является " уникально видимый"( §7.4.3 ), плюс термины" потенциально доступный "," читает "/" прочитано "," связано с ".Исторически в JLS 9 проводилось дополнительное различие между «технически наблюдаемым» и «действительно наблюдаемым», которое было исключено с JLS 11.
Кроме того, исторически (вплоть до JLS 8) использовалось «видимое»в определении теневого копирования ( §6.4.1 ), но это использование было отменено в JLS 9.
Наконец, обратите внимание, что некоторые из этих понятий (явным или неявным образом) включают определениеиз API в java.lang.module
.
Я предлагаю рассматривать эти термины как технические термины, не предназначенные для обращения к интуиции более широкой аудитории, отчасти потому, что многие определения в JLS приводят к «единицам компиляции»,которые не нужны для интуитивного понимания.Для сравнения возможного интуитивного понимания с пониманием на основе JLS см. Слайд № 20 из . JDT охватывает Java ™ 9 - взгляд изнутри .