Zoeken…


Syntaxis

  • vereist java.xml;
  • vereist openbaar java.xml; # stelt module bloot aan afhankelijken voor gebruik
  • exporteert com.example.foo; # afhankelijke personen kunnen openbare typen in dit pakket gebruiken
  • exporteert com.example.foo.impl naar com.example.bar; # gebruik beperken tot een module

Opmerkingen

Het gebruik van modules wordt aangemoedigd, maar is niet vereist, hierdoor kan bestaande code in Java 9 blijven werken. Het maakt ook een geleidelijke overgang naar modulaire code mogelijk.

Elke niet-modulaire code wordt in een naamloze module geplaatst wanneer deze wordt gecompileerd. Dit is een speciale module die typen van alle andere modules kan gebruiken, maar alleen van pakketten met een exports .

Alle pakketten in de naamloze module worden automatisch geëxporteerd.

Sleutelwoorden, bijv. module enz., Zijn beperkt in gebruik binnen de moduleaangifte maar kunnen elders als identificatiemiddelen worden gebruikt.

Een basismodule definiëren

Modules worden gedefinieerd in een bestand met de naam module-info.java , een modulebeschrijving genoemd. Het moet in de broncode root worden geplaatst:

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

Hier is een eenvoudige modulebeschrijving:

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

De modulenaam moet uniek zijn en het wordt aanbevolen dat u dezelfde Reverse-DNS-naamnotatie gebruikt als die door pakketten wordt gebruikt om dit te helpen garanderen.

De module java.base , die de basisklassen van Java bevat, is impliciet zichtbaar voor elke module en hoeft niet te worden opgenomen.

De requires verklaring stelt ons in staat om andere modules te gebruiken, in het voorbeeld is de module java.httpclient geïmporteerd.

Een module kan ook specificeren welke pakketten het exports en maakt het daarom zichtbaar voor andere modules.

Het pakket com.example.foo in de aangegeven exports clausule zichtbaar voor andere modules. com.example.foo van com.example.foo worden niet geëxporteerd, ze hebben hun eigen export nodig.

Omgekeerd com.example.bar die niet wordt vermeld exports zal clausules niet zichtbaar voor andere modules.



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow