Java Language
Module
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.