dúvida static  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
rodrigo.bossini
GUJ Master
[Avatar]

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?
rogelgarcia
GUJ Master
[Avatar]

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
davidtiagoconceicao
Virtual Machine Man
[Avatar]

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
rodrigo.bossini
GUJ Master
[Avatar]

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?
rogelgarcia
GUJ Master
[Avatar]

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
davidtiagoconceicao
Virtual Machine Man
[Avatar]

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
rodrigo.bossini
GUJ Master
[Avatar]

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?
rodrigo.bossini
GUJ Master
[Avatar]

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?
rogelgarcia
GUJ Master
[Avatar]

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
rodrigo.bossini
GUJ Master
[Avatar]

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?
rogelgarcia
GUJ Master
[Avatar]

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
rogelgarcia
GUJ Master
[Avatar]

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
rogelgarcia
GUJ Master
[Avatar]

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
rodrigo.bossini
GUJ Master
[Avatar]

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?
rodrigo.bossini
GUJ Master
[Avatar]

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?
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team