[quote=dyorgio]primeiro o source do ClassLoader.java
depois o metodo native defineClass(0,1 e 2)
:)[/quote]
Pois bem, acabei indo vasculhar o código fonte e ClassLoader.java, pelo menos na VM da Sun, não tem javadoc para os métodos que você citou. E, a propósito, é perfeitamente possível fazer
[code]public class MyThread extends Thread {
…
}
[/code]
Se bem que, acredito que, da mesma maneira que seu outro post, a idéia deste é criar uma gambiarra sem sentido. Então, porque ao invés de tentar elaborar coisas sem sentido, você simplesmente não gasta o tempo pensando em coisas elegantes?
P.S: Quanto ao outro post, dos objetos do stack, não sei se você sabe, mas todas as linguagens de programação são implementações de autômatos a pilha. Recuperar um objeto do stack é uma típica capacidade de Máquinas de Turing, que estão à frente dos autômatos a pilha e, portanto, é impossível de fazer com qualquer linguagem atual.
O objetivo do post é clarificar o porque não ser possivel injetar uma classe Thread customizada no java,
e não o quanto isso é ruim ou sei la mais oque,
mais obrigado pela resposta, apesar que vc só falou ser possivel e não disse como,
pelo menos vc se deu o trabalho de
responder
Para vc ver que não é possivel, basta vc implementar um classloader customizado
e tentar carregar outra classe do pacote java.*
PAM!! exception…
os metodos native não tem javadoc porque são private,
baixo nivel java.
Edit : Ja ia me esquecendo, pegar um objeto do stack ao meu ver não tem a ver com a linguagem
pois o java possui o objeto em memoria, possui o stack, e o mais importante de tudo
se tu rodar uma app java em modo debug, tu tens isso, vide DEBUG do eclipse.
A resposta para aquele post vai passar por esse caminho…como conseguir essa info fora do modo debug.
[quote=dyorgio]O objetivo do post é clarificar o porque não ser possivel injetar uma classe Thread customizada no java,
e não o quanto isso é ruim ou sei la mais oque,
mais obrigado pela resposta, apesar que vc só falou ser possivel e não disse como,
pelo menos vc se deu o trabalho de
responder
Para vc ver que não é possivel, basta vc implementar um classloader customizado
e tentar carregar outra classe do pacote java.*
PAM!! exception…
os metodos native não tem javadoc porque são private,
baixo nivel java.
[/quote]
Quanto a isso, não sei, nunca tentei… Aliás, porque tentar, mesmo?
Sim, mas veja o conceito aqui: o Eclipse intercepta a stack, mas não a possui. Por isso, pra ele, é possível pegar esses objetos. Aí, entra aquele problema que te disse: uma linguagem de programação implementa um autômato a pilha e, portanto, não pode voltar na pilha de execução ao seu bel prazer (precisa voltar do estado em que se encontra). Por isso que um objeto só se torna disponível novamente quando está no escopo de um método, entende?
O porque , vou repedir, não é o importante…
o desafio é fazer, pois ainda não julgo impossivel, apenas BEM dificil.
quanto ao objeto do stack, realmente o eclipse intecepta, não o possui…
provavelmente via JDI(Java Debug Interface) masssssss, tudo tem um mas,
a JDI sim, essa sim possui, afinal, ta tudo ali, sem o programa ter que voltar ao stack.
mas cara, apenas linkei os posts para fazer ligação de “desafio”,
a sua resposta foi bem vinda, e sim, da uma ideia do porque o java por padrão
não tem o object do stack disponivel.Mas acho melhor responder la naquele topico,
esse ficou poluido :(, saiu do objetivo dele
Alguem mais que saiba customizar classloaders e ja fez esse tipo de “hack”
na VM pode nos responder?