Palavra-chave exports

A palavra-chave exports foi introduzida no Java 9 como parte do Java Platform Module System (JPMS), também conhecido como o sistema de módulos. Ela é usada em um arquivo de módulo chamado module-info.java para declarar quais pacotes de um módulo estão acessíveis a outros módulos.

Sintaxe





module nome.do.modulo {
    exports nome.do.pacote;
}

Como funciona:

  • exports é usada para tornar um pacote acessível fora do módulo onde ele foi definido. Qualquer classe pública ou interface dentro de um pacote exportado pode ser usada por outros módulos.
  • Apenas os pacotes explicitamente exportados com exports estarão acessíveis a outros módulos. Se um pacote não for exportado, ele será encapsulado dentro do módulo e inacessível de fora.

Exemplo:

Suponha que temos um módulo chamado com.exemplo.modulo e um pacote chamado com.exemplo.pacote.

Arquivo module-info.java para com.exemplo.modulo:





module com.exemplo.modulo {
    exports com.exemplo.pacote;
}

Aqui, o pacote com.exemplo.pacote será acessível para outros módulos. Outros pacotes no módulo com.exemplo.modulo que não forem explicitamente exportados com exports não serão acessíveis externamente.

Exportando para módulos específicos

Você pode restringir a exportação de um pacote para apenas determinados módulos usando a sintaxe exports … to ….

Exemplo:





module com.exemplo.modulo {
    exports com.exemplo.pacote to outro.modulo;
}

Neste caso, o pacote com.exemplo.pacote será acessível apenas ao módulo outro.modulo, e não a outros módulos.

Benefícios do sistema de módulos:

  1. Encapsulamento forte: Apenas os pacotes que você deseja expor são visíveis para outros módulos.
  2. Modularização: Facilita a divisão de grandes aplicações em partes menores e mais manejáveis.
  3. Segurança: Melhora a segurança restringindo o acesso a pacotes internos de um módulo.