dúvida em controle do acesso às classes e pacotes

3 respostas
E

Olá galera,

Estou construindo um projeto que será utilizado em outro projeto como uma “lib”. Nesse projeto “lib” tenho diversas classes separadas em diversos pacotes e várias delas são públicas pois são acessadas por outras classes.
A minha dúvida é a seguinte: Quando gerar um jar, o projeto ficará com todas as classes públicas expostas, mas existem classes que não quero que sejam expostas.
Por exemplo:

Ao exportar esse projeto, todas as classes ficam expostas, mas não quero que o usuário acesse a classe “Constantes”. Existe alguma maneira de bloquear esse acesso e liberar somente as classes “Implementação” e “Implementação2”?

Estou me baseando em : http://java.sun.com/docs/books/tutorial/java/javaOO/accesscontrol.html

3 Respostas

juliano_FRG

Não sei se dá para bloquear da forma que você quer, mas um idéia é deixar a Classe Constantes com modificador default (assim restringindo sua visão apenas para as classes do mesmo pacote) e criar uma classe fachada pública no mesmo pacote para acessar a classe Constantes. Ou então criar a classe Constantes como uma classe interna private nas outras classes. Por hora ainda não tive uma boa idéia pra te ajudar.

E

Valeu juliano, vou procurar alguma coisa sobre as fachadas!!

Acredito que isso iria aumentar muito meu código, não quero repetir todas as constantes.

M

Acho que a primeira sugestão é melhor. Se você usará as constantes somente nessas duas classes desse pacote (tenha certeza disso), você pode deixar a classe Constantes sem modificador:

class Constantes {
/**
* Toda a classe aqui
*/
}

Logo, somente as classes do mesmo pacote tem acesso (conhecido como visibilidade de pacote).

Já as outras duas classes ficam públicas.

Criado 11 de dezembro de 2008
Ultima resposta 11 de dez. de 2008
Respostas 3
Participantes 3