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.
Posts recentes
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:
- Encapsulamento forte: Apenas os pacotes que você deseja expor são visíveis para outros módulos.
- Modularização: Facilita a divisão de grandes aplicações em partes menores e mais manejáveis.
- Segurança: Melhora a segurança restringindo o acesso a pacotes internos de um módulo.