Suche…


Syntax

  • erfordert java.xml;
  • erfordert öffentliche java.xml; # macht das Modul zur Verwendung an abhängige Personen
  • exportiert com.example.foo; # abhängige Personen können öffentliche Typen in diesem Paket verwenden
  • exportiert com.example.foo.impl nach com.example.bar; # Nutzung auf ein Modul beschränken

Bemerkungen

Die Verwendung von Modulen wird empfohlen, ist jedoch nicht erforderlich. Dadurch kann der vorhandene Code in Java 9 weiterarbeiten. Er ermöglicht auch einen schrittweisen Übergang zum modularen Code.

Nicht-modularer Code wird beim Kompilieren in ein nicht benanntes Modul eingefügt. Dies ist ein spezielles Modul, das Typen aus allen anderen Modulen verwenden kann, jedoch nur aus Paketen, die eine exports .

Alle Pakete im unbenannten Modul werden automatisch exportiert.

Schlüsselwörter, z. B. module usw., sind in der Moduldeklaration eingeschränkt, können aber an anderer Stelle weiterhin als Bezeichner verwendet werden.

Grundmodul definieren

Module werden in einer Datei namens module-info.java , die als module-info.java wird. Es sollte sich im Quellcode-Stammverzeichnis befinden:

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

Hier ist eine einfache Modulbeschreibung:

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

Der Modulname sollte eindeutig sein. Es wird empfohlen, dass Sie dieselbe Reverse-DNS-Benennungsnotation verwenden , die von Paketen verwendet wird, um dies sicherzustellen.

Das Modul java.base , das die grundlegenden Klassen von Java enthält, ist implizit für jedes Modul sichtbar und muss nicht eingeschlossen werden.

Die requires Erklärung ermöglicht es uns , weitere Module zu verwenden, im Beispiel das Modul java.httpclient importiert wird.

Ein Modul kann auch angeben, welche Pakete exports und macht es somit für andere Module sichtbar.

Das Paket com.example.foo in der deklarierten exports Klausel zu anderen Modulen sichtbar sein. Etwaige Unterpakete von com.example.foo nicht exportiert werden, sie ihre eigenen benötigen export Erklärungen.

Umgekehrt com.example.bar , die nicht in aufgeführt wird exports Klauseln werden nicht an andere Module sichtbar.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow