Restringir acesso a uma classe

tenho um pacote a.b
dentro do pacote eu tenho uma classe X
quero q essa classe X só seja visivel para algumas classes do meu programa
eu poderia colocar visibilidade de pacote na classe X, e colocar no pacote a.b as classes q eu quero q possam acessar essa classe, mas isso iria ferir um pouco a hierarquia de classes q planejei pro programa
no caso, eu queria q ela fosse visível para as classes do pacote a.b.c

se as classes q tu quer usar estão em a.b, e as classes q tu vai fazer pra usa-las estão em a.b.c, não tem jeito, a tua classe X terá q ser publica!

eh, imaginei :confused:
mas quando um método é chamado… nao tem como eu obter o nome da classe onde ocorreu a chamada?

[quote=“mmpaulo”]eh, imaginei :confused:
mas quando um método é chamado… nao tem como eu obter o nome da classe onde ocorreu a chamada?[/quote]

tem, passando o nome da classe como argumento aeheaheaheaheahae, é meio gambiarra mas funciona… hahaha, ja q tu vai ta codando na classe q vai ta chamando esse método, tu sempre vai saber o nome dela pra poder enviar no parametro… :lol:

hheheheh é… seria possivel assim… :stuck_out_tongue:
o chato é q qualquer classe poderia fingir que é uma outra, para poder acessar essa classe protegida

[quote=“mmpaulo”]hheheheh é… seria possivel assim… :stuck_out_tongue:
o chato é q qualquer classe poderia fingir que é uma outra, para poder acessar essa classe protegida[/quote]

Acho que temo como voce descubrir a classe usando o

(Thread) Thread.currentThread()).getContextClassLoader()

E ai lá voce ve quem deu o “load” na sua classe e consequentemente que invocou voce…esse exemplo só seria falho caso fosse uma variavel manipulada por varias threads…

Ou seja

Classe1
bla bla = new bla();
bla.metodo();
Classe2 
bla bla = new bla();
bla.metodo();

Funcionaria…

classe 1
bla bla = new bla();
bla.metodo();
classe 2
bla.metodo();

Não funcionaria…