Szukaj…


Składnia

  • wymaga java.xml;
  • wymaga publicznego pliku java.xml; # udostępnia moduł osobom zależnym do użytku
  • eksportuje com.example.foo; # osoby na utrzymaniu mogą używać typów publicznych w tym pakiecie
  • eksportuje com.example.foo.impl do com.example.bar; # ogranicz użycie do modułu

Uwagi

Korzystanie z modułów jest zalecane, ale nie wymagane, pozwala to na kontynuowanie pracy istniejącego kodu w Javie 9. Pozwala także na stopniowe przejście do kodu modułowego.

Każdy niemodułowy kod jest umieszczany w nienazwanym module podczas kompilacji. Jest to specjalny moduł, który może używać typów ze wszystkich innych modułów, ale tylko z pakietów, które mają deklarację exports .

Wszystkie pakiety w nienazwanym module są eksportowane automatycznie.

Słowa kluczowe, np. module itp ..., są ograniczone w użyciu w deklaracji modułu, ale mogą być nadal używane jako identyfikatory gdzie indziej.

Definiowanie podstawowego modułu

Moduły są zdefiniowane w pliku o nazwie module-info.java , o nazwie deskryptor modułu. Powinien zostać umieszczony w katalogu głównym kodu źródłowego:

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

Oto prosty deskryptor modułu:

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

Nazwa modułu powinna być unikalna i zaleca się stosowanie tej samej notacji nazewnictwa odwrotnego DNS , jakiej używają pakiety, aby to zapewnić.

Moduł java.base , który zawiera podstawowe klasy Javy, jest domyślnie widoczny dla każdego modułu i nie musi być dołączany.

requires deklaracja pozwala nam korzystać z innych modułów, na przykład moduł java.httpclient jest importowana.

Moduł może również określić, które pakiety exports a zatem czyni go widocznym dla innych modułów.

Pakiet com.example.foo zadeklarowany w klauzuli exports będzie widoczny dla innych modułów. Wszelkie paczki z com.example.foo nie zostaną wyeksportowane, potrzebują własnych deklaracji export .

I odwrotnie, com.example.bar który nie jest wymieniony w klauzulach dotyczących exports , nie będzie widoczny dla innych modułów.



Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow