A palavra-chave requires foi introduzida no Java 9 como parte do Java Platform Module System (JPMS), também conhecido como Project Jigsaw. Ela é usada no arquivo de definição do módulo (module-info.java) para declarar uma dependência de um módulo em relação a outro.
O que faz a palavra-chave requires?
- requires é usada para especificar que o módulo atual depende de outro módulo para compilar e executar.
- Esse mecanismo ajuda a modularizar o código, garantindo que um módulo só possa usar as APIs que são explicitamente declaradas como dependências.
Sintaxe Básica:
Dentro do arquivo module-info.java, você usa requires para declarar uma dependência de outro módulo.
Exemplo:
module meu.modulo {
requires outro.modulo;
}
Nesse exemplo:
- meu.modulo declara que depende de outro.modulo.
- Isso significa que meu.modulo pode usar as APIs exportadas por outro.modulo.
Posts recentes
Variantes da Palavra-chave requires:
1.requires static:
module meu.modulo {
requires static outro.modulo;
}
2.requires transitive:
module meu.modulo {
requires transitive outro.modulo;
}
Com requires transitive, se um módulo A depende de B e B depende de C, então A também terá acesso a C.
Exemplo Completo:
1.Módulo A:
module moduloA {
requires moduloB;
}
2.Módulo B:
module moduloB {
requires transitive moduloC;
}
3.Módulo C:
module moduloC {
// Define exports and provides here
}
Nesse caso, um módulo que depende de moduloA terá acesso a moduloC devido à dependência transitiva.
Benefícios do Uso de requires:
- Encapsulamento: Permite que você declare explicitamente quais módulos são necessários, promovendo um melhor encapsulamento e evitando acoplamentos ocultos.
- Verificação: Garante que todas as dependências estejam disponíveis durante a compilação e execução.
- Modularidade: Facilita a modularização do código, permitindo a construção de sistemas mais complexos e escaláveis de forma mais controlada e organizada.
A palavra-chave requires é fundamental para o sistema de módulos do Java, pois ajuda a definir e gerenciar dependências entre diferentes partes de um sistema, promovendo uma arquitetura mais modular e organizada.