Switch com atributo final  XML
Índice dos Fóruns » Java Básico
Autor Mensagem
pardal_nb
Virtual Machine Man

Membro desde: 12/09/2006 08:26:06
Mensagens: 674
Offline

Salve pessoal,

seguinte, alguem poderia me explicar o porque do seguinte codigo nao funcionar assim:


e qnd eu mudo para:

ele funciona perfeitamente...

nao consegui entender o motivo pelo qual o conteudo do atributo tenha q ser definido no momento de sua criacao...

[]
danielbussade
JavaEvangelist

Membro desde: 13/09/2007 09:26:21
Mensagens: 415
Localização: Itaperuna -RJ
Offline

Olá o que acontece eh o seguinte o atributo final, quando usado com variável é pra definir uma constante. Ou seja uma variável somente de leitura, não pode receber nenhum valor após ser criado, por isso que tem que ser definido o valor na criação.

Deu pra entender??



Att

When you steal from one author, is called plagiarism, when you steal from many is called research.

[WWW] [MSN]
pardal_nb
Virtual Machine Man

Membro desde: 12/09/2006 08:26:06
Mensagens: 674
Offline

q papo estranho esse seu heim, "deu pra entender?"...rs...dô nada não..heheh..

até onde eu sei, para ser uma constante é necessario definir um atributo como STATIC e FINAL...e nada me impede de definir o valor de um atributo FINAL dps de ter sido criado...caso contrario daria erro na hora de compilar...

faz sentido o q vc falou, mas será q é SÓ isso?!
danielbussade
JavaEvangelist

Membro desde: 13/09/2007 09:26:21
Mensagens: 415
Localização: Itaperuna -RJ
Offline

É o deu pra entender pegou mal mesmo, hauauh

Kra realmente, eu achava que depois de marcada como final, eu não poderia atribuir valor a ela, mas testei aqui e funciona normalmente.
Outr coisa interessante é que dentro do método main eu não posso declarar algo do tipo


Resumindo, fui tentar te responde e me confundi ainda mais, huauha, vou deixar o tópico para outra pessoa esclarecer.

Valeu

When you steal from one author, is called plagiarism, when you steal from many is called research.

[WWW] [MSN]
pardal_nb
Virtual Machine Man

Membro desde: 12/09/2006 08:26:06
Mensagens: 674
Offline

danielbussade wrote:
Resumindo, fui tentar te responde e me confundi ainda mais, huauha, vou deixar o tópico para outra pessoa esclarecer.


junte-se aos bons....hehehe...brincadeira..

esse exemplo eu tirei do livro da K&B.....e não consegui compreender de forma clara...vamos aguardar alguém que saiba

=)
danielbussade
JavaEvangelist

Membro desde: 13/09/2007 09:26:21
Mensagens: 415
Localização: Itaperuna -RJ
Offline

Olá aindei pesquisando e descobri o seguinte:

Acho que o java herdou isto do c++:

"O switch por especificação , compara um valor em relação a várias constantes".

Por isso eu nao consigo usar:



Mas quando coloco o modifcador final, ou transforma variavel em uma constante! E naquele seu primeiro caso:



O x não é considerado "constante", porque ele nao foi inicializado na criação, podendo sofrer alteração de valor,
agora experimente fazer o seguinte:


Isto não compila, porque o x agora é uma constante é pode ser usado no switch!



Att


When you steal from one author, is called plagiarism, when you steal from many is called research.

[WWW] [MSN]
pardal_nb
Virtual Machine Man

Membro desde: 12/09/2006 08:26:06
Mensagens: 674
Offline

danielbussade wrote:
O x não é considerado "constante", porque ele nao foi inicializado na criação, podendo sofrer alteração de valor,
agora experimente fazer o seguinte:


Isto não compila, porque o x agora é uma constante é pode ser usado no switch!



Att



isso nao compila pq vc nao pode alterar o valor de um atributo FINAL e ja com valor...neh?!
LPJava
GUJ Hacker

Membro desde: 18/04/2006 12:50:23
Mensagens: 5524
Localização: Bahia/Porto Alegre
Offline

pardal_nb wrote:
danielbussade wrote:
O x não é considerado "constante", porque ele nao foi inicializado na criação, podendo sofrer alteração de valor,
agora experimente fazer o seguinte:


Isto não compila, porque o x agora é uma constante é pode ser usado no switch!



Att





isso nao compila pq vc nao pode alterar o valor de um atributo FINAL e ja com valor...neh?!


Sim, apos ter dado o valor ja era.. nao pode ser mais alterado.

Sun Certified Java Programmer 5.0
Blog:http://www.camilolopes.com
Twitter:www.twitter.com/camilolope
Linkedin: http://br.linkedin.com/in/camilolopes
Curso online OCPJP: http://pro.imasters.com.br/online/cursos/preparatorio-para-certificacao-java-ocjp
Autor livro Guia SCJP & JEE c/ Frameworks: http://blog.camilolopes.com.br/livrosrevistaspalestras/
[WWW]
danielbussade
JavaEvangelist

Membro desde: 13/09/2007 09:26:21
Mensagens: 415
Localização: Itaperuna -RJ
Offline




isso nao compila pq vc nao pode alterar o valor de um atributo FINAL e ja com valor...neh?!


Exatamente!!!

When you steal from one author, is called plagiarism, when you steal from many is called research.

[WWW] [MSN]
Raff
Virtual Machine Man
[Avatar]

Membro desde: 31/07/2006 10:31:45
Mensagens: 642
Localização: Marilia - SP / São Carlos -SP
Offline

danielbussade wrote:É o deu pra entender pegou mal mesmo, hauauh

Kra realmente, eu achava que depois de marcada como final, eu não poderia atribuir valor a ela, mas testei aqui e funciona normalmente.
Outr coisa interessante é que dentro do método main eu não posso declarar algo do tipo


Resumindo, fui tentar te responde e me confundi ainda mais, huauha, vou deixar o tópico para outra pessoa esclarecer.

Valeu


Amigo isso acontece pelo seguinte motivo de uma variavel local, não se dever usar nenhum tipo de modificador de acesso.. o único modificador que se poder usar dentro de uma metodo é o final


SCJP 5.0
SCWCD 5.0
Mestrando UFSCAR...
[Email] [MSN]
 
Índice dos Fóruns » Java Básico
Ir para:   
Powered by JForum 2.1.8 © JForum Team