Eduardo Issao Ito wrote:
>
> Com o metodo java.lang.Class.forName(String) voce pode carregar classes
> dinamicamente. Mas que eu saiba nao e' possivel apaga-las.
>
> Pensando bem, isso e' possivel (o WebSphere faz isso) mas voce teria que
> criar o seu class loader.
>
> Rafael Chaves wrote:
> >
> > E' possivel recarregar uma classe em tempo de execucao para que modificacoes
>nos seu codigo passem a ter efeito sem que seja necessario reinicializar a maquina
>virtual? Como?
> >
> > Fico no aguardo, obrigado.
> >
> > Rafael
> >
Existem duas coisas aqui. A partir do JDK 1.1, as classes passaram
a ser eliminadas pelo GC sempre que nao existem mais referencias
a elas. Ou seja, se nao existe nenhum objeto de uma classe no
sistema, essa classe eventualmente sera GCed. Mas isso depende
do GC, e voce nao tem controle de exatamente quando a classe
sera descarregada para que voce possa carregar a nova.
Se voce quer controlar esse comportamento, de tal forma a poder
quando voce quiser retirar e recarregar uma classe do sistema,
voce precisara criar o seu proprio ClassLoader.
Uma forma mais simples de fazer algo semelhante sem ter que
criar seu proprio ClassLoader eh, quando voce modificar o codigo,
voce carrega a nova classe em um novo ClassLoader. Com isso,
novos objetos utilizarao a nova classe, enquanto que a classe
antiga sera mantida ate que nao existam nenhum objeto que a
utilize, e eventualmente sera descarregada. O problema disso
eh que seu programa pode ficar bem complicado quando voce tem
varios objetos de mesma classe com comportamentos diferentes
(na verdade, eles sao de classes diferentes, pois duas classes
carregadas por ClassLoaders diferentes _sao_ diferentes, mas
voce as referenciara da mesma forma, o que pode ficar confuso)
Mas em compensacao, voce nao precisara criar seu proprio
ClassLoader, o que eh por si so bastante complexo.
Espero nao ter confundido mais as coisas :o)
Bruno.
______________________________________________________________________
Bruno Peres Ferreira de Souza Sun Microsystems
System Engineer - Java Technologist [EMAIL PROTECTED]
if I fail, if I succeed, at least I live as I believe
* Para nao receber mais e-mails da lista, acesse
<http://www.sun.com.br:8080/guest/RemoteAvailableLists>, coloque seu e-mail, escolha a
lista <[EMAIL PROTECTED]> e de um <submit>.