Поиск…


Синтаксис

  • требует java.xml;
  • требует публичного java.xml; # предоставляет модуль иждивенцам для использования
  • экспортирует com.example.foo; # иждивенцы могут использовать общедоступные типы в этом пакете
  • экспортирует com.example.foo.impl в com.example.bar; # ограничение использования модуля

замечания

Использование модулей поощряется, но не требуется, это позволяет существующему коду продолжать работать на Java 9. Он также обеспечивает постепенный переход к модульному коду.

Любой немодульный код помещается в неназванный модуль при компиляции. Это специальный модуль, который может использовать типы из всех других модулей, но только из пакетов с декларацией exports .

Все пакеты в неназванном модуле экспортируются автоматически.

Ключевые слова, например module т. Д., Ограничены в использовании в объявлении модуля, но могут быть использованы в качестве идентификаторов в другом месте.

Определение базового модуля

Модули определяются в файле с именем module-info.java , называемом дескриптором модуля. Он должен быть помещен в корень исходного кода:

 |-- module-info.java
 |-- com
     |-- example
         |-- foo
             |-- Foo.java
         |-- bar
             |-- Bar.java

Вот простой описатель модуля:

module com.example {
    requires java.httpclient;
    exports com.example.foo;
}

Имя модуля должно быть уникальным, и рекомендуется использовать одну и ту же нотацию имен DNS-реверса, используемую пакетами, чтобы обеспечить это.

Модуль java.base , который содержит базовые классы Java, неявно виден любому модулю и не нуждается в его включении.

requires декларация позволяет использовать другие модули, в примере модуль java.httpclient импортируется.

Модуль также может указывать, какие пакеты он exports и, следовательно, делает его видимым для других модулей.

Пакет com.example.foo объявлен в exports пункта будет виден другим модулям. Любые com.example.foo не будут экспортироваться, им нужны собственные декларации export .

И наоборот, com.example.bar который не указан в предложениях exports , не будет видимым для других модулей.



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow