Ricerca…


Sintassi

  • richiede java.xml;
  • richiede java.xml pubblico; # espone il modulo ai dipendenti per l'uso
  • esporta com.example.foo; # dipendenti possono utilizzare tipi pubblici in questo pacchetto
  • esporta com.example.foo.impl in com.example.bar; # limita l'utilizzo a un modulo

Osservazioni

L'uso di moduli è incoraggiato ma non richiesto, ciò consente al codice esistente di continuare a lavorare in Java 9. Consente inoltre una transizione graduale al codice modulare.

Ogni codice non modulare viene inserito in un modulo senza nome quando viene compilato. Questo è un modulo speciale che è in grado di utilizzare i tipi da tutti gli altri moduli ma solo dai pacchetti che hanno una dichiarazione di exports .

Tutti i pacchetti nel modulo senza nome vengono esportati automaticamente.

Le parole chiave, ad esempio il module ecc., Sono limitate in uso all'interno della dichiarazione del modulo, ma possono essere utilizzate come identificatori altrove.

Definire un modulo base

I moduli sono definiti in un file denominato module-info.java , denominato descrittore di modulo. Dovrebbe essere inserito nella root del codice sorgente:

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

Ecco un semplice descrittore di modulo:

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

Il nome del modulo deve essere univoco e si consiglia di utilizzare la stessa notazione di denominazione DNS inversa utilizzata dai pacchetti per garantire ciò.

Il modulo java.base , che contiene le classi base di Java, è implicitamente visibile a qualsiasi modulo e non ha bisogno di essere incluso.

La dichiarazione dei requires ci consente di utilizzare altri moduli, nell'esempio il modulo java.httpclient viene importato.

Un modulo può anche specificare quali pacchetti exports e quindi renderli visibili ad altri moduli.

Il pacchetto com.example.foo dichiarato nella clausola exports sarà visibile ad altri moduli. Eventuali sotto-pacchetti di com.example.foo non verranno esportati, avranno bisogno delle proprie dichiarazioni di export .

Al contrario, com.example.bar che non è elencato nelle clausole di exports non sarà visibile ad altri moduli.



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow