| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 13:36:03
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline
|
Tenho o seguinte código:
O objeto "o" é uma variável de classe, por ser marcada com static. Isso quer dizer que o compilador traduz a linha
para
É isso?
Porque se não for isso, a cada instanciação de objetos da classe Teste o construtor irá rodar e fazer com que a referência "o" aponte para um novo objeto, o que não seria permitido, já que "o" é marcado com final.
Como é que funciona isso?
|
http://www.rodrigobossini.com.br/
Meu Twitter:@rodrigobossini Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo? |
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 13:45:14
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1850
Offline
|
É isso mesmo... como o 'o' é static.. só é instanciado uma vez
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 13:48:47
|
davidtiagoconceicao
Virtual Machine Man
![[Avatar]](/images/avatar/32fb0afb79c483a66f39391a80354f8c.png)
Membro desde: 17/10/2008 07:28:29
Mensagens: 567
Localização: Blumenau - SC
Offline
|
Atributos com o modificador static não são atributos de objeto, são atributos de classe. Portanto, todas as instâncias da classe Teste apontarão para a mesma instância do objeto.
Mais do que isso, não é necessário sequer haver uma instância de Teste para que o objeto o exista, ele pode ser obtido diretamente da classe (Teste.o, desconsiderando os modificadores de permissão).
|
Bacharel em Ciência da Computação/FURB
SCJP 6
Android Developer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 13:51:51
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline
|
davidtiagoconceicao wrote:Atributos com o modificador static não são atributos de objeto, são atributos de classe. Portanto, todas as instâncias da classe Teste apontarão para a mesma instância do objeto.
Mais do que isso, não é necessário sequer haver uma instância de Teste para que o objeto o exista, ele pode ser obtido diretamente da classe (Teste.o, desconsiderando os modificadores de permissão).
Foi exatamente isso que eu disse. Minha pergunta vai um pouco além - eu perguntei se o compilador transforma o código inicial em um bloco de inicialização estático. Quando for responder em fóruns em geral, é interessante que você o faça com foco na pergunta do autor do tópico, e não simplesmente para mostrar seu conhecimento. Assim você poupa o seu e o meu tempo.
|
http://www.rodrigobossini.com.br/
Meu Twitter:@rodrigobossini Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo? |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 13:57:45
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1850
Offline
|
Transforma... mas qual a importancia disso? O que importa é a funcionalidade...
E deixa o cara falar.. ele nao sabe exatamente em que vc tem duvida.... e o que ele respondeu pode ajudar outras pessoas...
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 13:59:39
|
davidtiagoconceicao
Virtual Machine Man
![[Avatar]](/images/avatar/32fb0afb79c483a66f39391a80354f8c.png)
Membro desde: 17/10/2008 07:28:29
Mensagens: 567
Localização: Blumenau - SC
Offline
|
rod.attack wrote:
davidtiagoconceicao wrote:Atributos com o modificador static não são atributos de objeto, são atributos de classe. Portanto, todas as instâncias da classe Teste apontarão para a mesma instância do objeto.
Mais do que isso, não é necessário sequer haver uma instância de Teste para que o objeto o exista, ele pode ser obtido diretamente da classe (Teste.o, desconsiderando os modificadores de permissão).
Foi exatamente isso que eu disse. Minha pergunta vai um pouco além - eu perguntei se o compilador transforma o código inicial em um bloco de inicialização estático. Quando for responder em fóruns em geral, é interessante que você o faça com foco na pergunta do autor do tópico, e não simplesmente para mostrar seu conhecimento. Assim você poupa o seu e o meu tempo.
Ok cara.
Obrigado pela dica e desculpa por tentar ajudar.
|
Bacharel em Ciência da Computação/FURB
SCJP 6
Android Developer |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 13:59:47
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline
|
rogelgarcia wrote:Transforma... mas qual a importancia disso? O que importa é a funcionalidade...
Você afirma que ele transforma. Logo deve saber a importância e implicações desta afirmação. Aliás, você poderia me indicar a fonte de onde extraiu esta informação?
|
http://www.rodrigobossini.com.br/
Meu Twitter:@rodrigobossini Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo? |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 14:01:00
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline
|
davidtiagoconceicao wrote:
rod.attack wrote:
davidtiagoconceicao wrote:Atributos com o modificador static não são atributos de objeto, são atributos de classe. Portanto, todas as instâncias da classe Teste apontarão para a mesma instância do objeto.
Mais do que isso, não é necessário sequer haver uma instância de Teste para que o objeto o exista, ele pode ser obtido diretamente da classe (Teste.o, desconsiderando os modificadores de permissão).
Foi exatamente isso que eu disse. Minha pergunta vai um pouco além - eu perguntei se o compilador transforma o código inicial em um bloco de inicialização estático. Quando for responder em fóruns em geral, é interessante que você o faça com foco na pergunta do autor do tópico, e não simplesmente para mostrar seu conhecimento. Assim você poupa o seu e o meu tempo.
Ok cara.
Obrigado pela dica e desculpa por tentar ajudar.
Ler atentamente o que escrevi antes de disparar qualquer coisa que vem à cabeça é o primeiro requisito para considerar que, de fato, você "tentou ajudar".
|
http://www.rodrigobossini.com.br/
Meu Twitter:@rodrigobossini Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo? |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 14:05:02
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1850
Offline
|
a cada instanciação de objetos da classe Teste o construtor irá rodar e fazer com que a referência "o" aponte para um novo objeto
Isso não acontece...
Aliás, você poderia me indicar a fonte de onde extraiu esta informação?
Da minha cabeça
Mas fique tranquilo... que só um objeto será instanciado.. o construtor de Teste não influencia em nada nos atributos estaticos....
E como o colega falou.. vc nem precisa ter um Teste instanciado para o atributo 'o' ser instanciado...
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 14:12:09
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline
|
rogelgarcia wrote:
a cada instanciação de objetos da classe Teste o construtor irá rodar e fazer com que a referência "o" aponte para um novo objeto
Isso não acontece...
Aliás, você poderia me indicar a fonte de onde extraiu esta informação?
Da minha cabeça
Mas fique tranquilo... que só um objeto será instanciado.. o construtor de Teste não influencia em nada nos atributos estaticos....
E como o colega falou.. vc nem precisa ter um Teste instanciado para o atributo 'o' ser instanciado...
Isto não é uma pergunta sobre quantos objetos serão instanciados. É uma pergunta sobre análise léxica e geração de código. Por isso é importante que se entenda o que perguntei antes de falar qualquer coisa que você sabe sobre o "static".
Essa resposta não me serve. Você sabe o que é um problema NP-Completo? Seguindo seu racionínio, eu vou agendar minha presença por aí em algum congresso de TI, pra falar que achei a solução para um problema NP-Completo (e por consequencia para todos eles), vou dizer a primeira coisa que eu "tirar da minha cabeça" e falar pra todo mundo ficar tranquilo porque eu sei que é assim. Logo vou ganhar o cobiçado 1 milhão de dólares que está reservado há um bom tempo para o cidadão que conseguir tal proeza. Entendeu agora a importância de falar com convicção, a importância de entender BEM de um assunto antes de falar sobre ele?
|
http://www.rodrigobossini.com.br/
Meu Twitter:@rodrigobossini Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo? |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 14:19:30
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1850
Offline
|
Cara.. a culpa foi sua mesmo... fez uma pergunta totalmente genérica... e entrou na questao de quantos objetos serão instanciados...
Aprender a formular a pergunta também é bom pra gente nao ter que adivinhar o que vc tá querendo...
E vc ainda faz a pergunta em Java Basico..
Vou te dar a dica... leia os bytecodes gerados pelo compilador.. assim voce vai saber o que faz...
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 14:20:43
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1850
Offline
|
Mais uma coisa.. as ideias e soluções saem da cabeça de alguém viu?!
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 14:22:09
|
rogelgarcia
GUJ Master
![[Avatar]](/images/avatar/861e8bae74e22a572164fdb59b1caa8b.jpg)
Membro desde: 21/06/2007 23:27:21
Mensagens: 1850
Offline
|
Logo vou ganhar o cobiçado 1 milhão de dólares que está reservado há um bom tempo para o cidadão que conseguir tal proeza.
O cidadao que conseguir tal proeza.. terá conseguido por alguma informacao que saiu da cabeça dele...
|
Rógel Garcia, criador do framework NEXT
http://www.nextframework.org
 |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 14:23:18
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline
|
rogelgarcia wrote:Cara.. a culpa foi sua mesmo... fez uma pergunta totalmente genérica... e entrou na questao de quantos objetos serão instanciados...
Aprender a formular a pergunta também é bom pra gente nao ter que adivinhar o que vc tá querendo...
E vc ainda faz a pergunta em Java Basico..
Vou te dar a dica... leia os bytecodes gerados pelo compilador.. assim voce vai saber o que faz...
Você tem razão. Minha pergunta não está lá tão clara e deveria ter escolhido talvez um outro fórum.
rogelgarcia wrote:
Mais uma coisa.. as ideias e soluções saem da cabeça de alguém viu?!
Sim. Neste caso suponho que tenha sido da cabeça de quem criou o analisador léxico, semântico, gerador de código, etc do java, não?
|
http://www.rodrigobossini.com.br/
Meu Twitter:@rodrigobossini Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo? |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 24/03/2010 14:24:48
|
rodrigo.bossini
GUJ Master
![[Avatar]](/images/avatar/3b6fe2dc98ceed6e1608e7cfc662ab11.jpg)
Membro desde: 01/07/2008 20:59:17
Mensagens: 1055
Offline
|
rogelgarcia wrote:
Logo vou ganhar o cobiçado 1 milhão de dólares que está reservado há um bom tempo para o cidadão que conseguir tal proeza.
O cidadao que conseguir tal proeza.. terá conseguido por alguma informacao que saiu da cabeça dele...
Ideias brilhantes autênticar são admiráveis.
Adivinhação é diferente disso.
|
http://www.rodrigobossini.com.br/
Meu Twitter:@rodrigobossini Se uma pessoa fala português há 30 anos e ainda não aprendeu, por que é que vou acreditar que ela está programando em alguma linguagem de programação há apenas 10 anos e sabe o que está fazendo? |
|
|
 |
|
|