Saber Endereço do Objeto na Memoria  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

Bem, to querendo pegar um objeto criado e saber o endereço dele na memoria.
Porque? Pra saber em que lugar do meu programa ele tah perdendo a referencia, pois qria ter o mesmo objeto indo pra lah e pra ca. Mas em algum momente ele tah criando outro na memoria, e o que inicio a aplicação no final nao eh o mesmo.

Qual a intenção: To querendo jogar objetos dentro de uam List. Depois leio essa list, pego os objetos e jogo num JList. Depois pego o item selecionado na JList e carrego com outros valores. Qria que o mesmo objeto que estou alterando o valor fosse o mesmo que está na List. Mas não é....

Tks!

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
maikonaraujo
JavaChild
[Avatar]

Membro desde: 19/01/2005 05:20:25
Mensagens: 108
Localização: Rio de Janeiro - RJ
Offline

É pq o JList clona a string....
Vc pode resolver este problema utilizando o padrao Observer.

How many people can read hex if only you and dead people can read hex? 57006

In a world without fences and walls, who needs Gates and Windows?

The box said 'Requires Windows 95 or better'. So I installed LINUX
[MSN]
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

Mas nao estou adicionando a String. Estou adicionando o objeto que a List retorna. E estou trabalhando com o DefaultListModel.

Tks!

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
thingol
Moderador

Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline

brlima wrote:Bem, to querendo pegar um objeto criado e saber o endereço dele na memoria.


Você pode usar algum debugger que faça isso por você (não lembro de algum gratuito que faça isso). O endereço de um objeto não é fixo, para começar; mesmo usando System.identityHashCode(), não é possível obter o endereço - a explicaçâo: quando se chama hashCode() para um objeto que não define hashCode(), ele retorna um "hash code" que está relacionado ao endereço virtual do objeto na memória no presente momento (mas não é o endereço). Só que esse hash code fica então guardado como um campo oculto desse objeto. Quando o objeto for movido de lugar na memória, o hash code retornado será o anteriormente retornado, não o novo endereço na memória.

Em vez disso, defina um campo no seu objeto que contém um "número de criação" desse objeto - é fácil, só ter um campo estático na classe que conta quantos objetos foram criados, e no construtor você incrementa esse contador, e atribui ao "número" do objeto. Algo como:



Aí você fica sabendo se você não andou criando objetos em lugares esquisitos (acho é que seu programa está meio bagunçado..)



[WWW]
maikonaraujo
JavaChild
[Avatar]

Membro desde: 19/01/2005 05:20:25
Mensagens: 108
Localização: Rio de Janeiro - RJ
Offline

Acho q este site pode ajudar....

http://java.sun.com/developer/technicalArticles/ALT/RefObj/

How many people can read hex if only you and dead people can read hex? 57006

In a world without fences and walls, who needs Gates and Windows?

The box said 'Requires Windows 95 or better'. So I installed LINUX
[MSN]
maikonaraujo
JavaChild
[Avatar]

Membro desde: 19/01/2005 05:20:25
Mensagens: 108
Localização: Rio de Janeiro - RJ
Offline

Neste último site q passei tem muita coisa de como pegar a referencia em runtime

How many people can read hex if only you and dead people can read hex? 57006

In a world without fences and walls, who needs Gates and Windows?

The box said 'Requires Windows 95 or better'. So I installed LINUX
[MSN]
brlima
Moderador
[Avatar]

Membro desde: 12/05/2003 14:03:38
Mensagens: 1537
Localização: São Paulo - SP
Offline

Vou dar uma olhada. Tks pessoal. Depois posto o que aconteceu....

Bruno R. Lima
-------------------------------------------
flickr :: twitter
[MSN]
louds
Moderador
[Avatar]

Membro desde: 29/04/2003 23:09:15
Mensagens: 4061
Localização: São Paulo
Offline

Fiquei pensando em uma coisa.
Colocar um breakpoint no construtor não resolveria isso?

http://www.kumpera.net/blog/
http://www.mono-project.com/
"Each individual should work for himself. People will not sacrifice themselves for the company. They come to work at the company to enjoy themselves."
Soichiro Honda
[ICQ]
kuchma
Moderador
[Avatar]

Membro desde: 17/01/2003 19:36:16
Mensagens: 1231
Localização: Curitiba - PR
Offline

Ou entao "salve" teu objeto original em uma referencia segura (que voce nunca utiliza) e no final compare as referencias com ==. Mas a ideia do breakpoint eh boa.


Marcio Kuchma

E tu, Belém-Efrata, pequena demais para figurar como grupo de milhares de Judá, de ti me sairá o que há de reinar em Israel, e cujas origens são desde os tempos antigos, desde os dias da eternidade. Mq 5:2, Miquéias, 750 AC aprox.
[WWW] [ICQ]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team