Recherche…


Syntaxe

  • nécessite java.xml;
  • nécessite public java.xml; # expose le module aux dépendants pour utilisation
  • exportations com.example.foo; # dépendants peuvent utiliser les types publics dans ce paquet
  • exporte com.example.foo.impl vers com.example.bar; # restreindre l'utilisation à un module

Remarques

L'utilisation des modules est encouragée mais n'est pas obligatoire, cela permet au code existant de continuer à fonctionner en Java 9. Il permet également une transition progressive vers du code modulaire.

Tout code non modulaire est placé dans un module sans nom lorsqu'il est compilé. C'est un module spécial capable d'utiliser des types de tous les autres modules, mais uniquement à partir de packages qui ont une déclaration d' exports .

Tous les paquets du module sans nom sont exportés automatiquement.

Les mots-clés, par exemple, module etc ..., sont restreints dans la déclaration de module mais peuvent continuer à être utilisés comme identificateurs ailleurs.

Définir un module de base

Les modules sont définis dans un fichier nommé module-info.java , nommé descripteur de module. Il doit être placé dans la racine du code source:

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

Voici un descripteur de module simple:

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

Le nom du module doit être unique et il est recommandé d'utiliser la même notation de nommage Reverse-DNS que celle utilisée par les packages pour garantir cela.

Le module java.base , qui contient les classes de base de Java, est implicitement visible par tous les modules et n'a pas besoin d'être inclus.

La requires déclaration nous permet d'utiliser d' autres modules, dans l'exemple le module java.httpclient est importé.

Un module peut également spécifier les paquets qu'il exports et le rend donc visible aux autres modules.

Le package com.example.foo déclaré dans la clause exports sera visible par les autres modules. Les sous-packages de com.example.foo ne seront pas exportés, ils ont besoin de leurs propres déclarations d' export .

À l'inverse, com.example.bar qui n'est pas répertorié dans exports clauses exports ne sera pas visible par les autres modules.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow