Estou desenvolvendo uma biblioteca que possui algumas classes que eu não gostaria que fossem instanciadas fora da minha lib. A única coisa que sei é que um construtor pode ser package protected, o que restringe sua instanciação ao pacote que pertence (certo?). Eu até poderia usar isso, o problema é que me obrigaria a usar uma estrutura de pacotes baseado nessa minha necessidade. Por exemplo, se eu tenho a seguinte estutura:
pacoteTipo1
ClasseTipo1A
ClasseTipo1B
pacoteTipo2
ClasseTipo2A
ClasseTipo2B
Digamos que a ClasseTipo1A precise instanciar alguma classe do pacoteTipo2 (ClasseTipo2A p.ex.) e eu não quisesse que essa mesma classe fosse instanciada fora da minha lib. A única maneira que encontrei foi mudando a estrutura de pacotes para
pacoteTipo1
ClasseTipo1A
ClasseTipo1B
[color=blue]ClasseTipo2A[/color]
pacoteTipo2
ClasseTipo2B
Daí eu declararia o construtor da classe ClasseTipo2A como package protected. Mas isso mudaria totalmente minha organização de pacotes. Existe alguma outra forma de fazer isso (sem ter que basear minha estrutura de pacotes nessa “segurança”) ? Outra forma seria declarar a ClasseTipo2A dentro da ClasseTipo1A, mas isso novamente mudaria minha estrutura.
Não sei se deu pra entender, achei difícil de explicar minha dúvida.
Obrigado.