Sök…


Syntax

  • kräver java.xml;
  • kräver public java.xml; # exponerar modulen för beroende för användning
  • exporterar com.example.foo; # beroende kan använda offentliga typer i detta paket
  • exporterar com.example.foo.impl till com.example.bar; # begränsa användningen till en modul

Anmärkningar

Användning av moduler uppmuntras men krävs inte, detta gör att befintlig kod kan fortsätta arbeta i Java 9. Det möjliggör också en gradvis övergång till modulkod.

Alla icke-modulära koder läggs i en namngiven modul när den sammanställs. Detta är en speciell modul som kan använda typer från alla andra moduler men endast från paket som har en exports .

Alla paket i den namngivna modulen exporteras automatiskt.

Nyckelord, t.ex. module etc. ..., är begränsade i användning i moduldeklarationen men kan fortsätta att användas som identifierare på annat håll.

Definiera en grundmodul

Moduler definieras i en fil med namnet module-info.java , benämnd en modulbeskrivning. Det bör placeras i källkodsroten:

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

Här är en enkel modulbeskrivning:

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

Modulnamnet ska vara unikt och det rekommenderas att du använder samma Reverse-DNS-namnnotation som används av paket för att säkerställa detta.

Modulen java.base , som innehåller Java: s basklasser, är implicit synlig för alla moduler och behöver inte inkluderas.

Den requires deklarationen tillåter oss att använda andra moduler, i exemplet är modulen java.httpclient importerad.

En modul kan också specificera vilka paket den exports och därför gör den synlig för andra moduler.

Paketet com.example.foo deklareras i exports klausulen kommer att vara synlig för andra moduler. Alla com.example.foo från com.example.foo kommer inte att exporteras, de behöver sina egna export .

Omvänt com.example.bar som inte finns med i exports kommer klausuler inte vara synliga för andra moduler.



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow