| Autor |
Mensagem |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/05/2005 17:37:13
|
ronaldorezende
JavaGuru
Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline
|
Nesse código, o eclipse me obrigou a colocar o "=null" na declaração de tesoura e portico. Por que isso acontece? Não é a mesma coisa de não criar o objeto? No final do código eu tenho um if verificando se são null ou não.
|
|
|
 |
|
|
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/05/2005 17:41:22
|
Mauricio Linhares
Moderador
![[Avatar]](/images/avatar/97af07a14cacba681feacf3012730892.jpg)
Membro desde: 09/01/2005 23:28:22
Mensagens: 3717
Localização: João Pessoa, Paraíba - Brasil
Offline
|
Porque para o analizador léxico do Eclipse você pode estar tentando usar variáveis que ainda não foram instanciadas (veja o seu if sem else).
|
Meu blog sobre desenvolvimento | My Last.fm | @mauriciojr
Screencast de Introdução a linguagem Objective-C |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/05/2005 17:43:27
|
danieldestro
Moderador
![[Avatar]](/images/avatar/a5bfc9e07964f8dddeb95fc584cd965d.png)
Membro desde: 04/09/2002 17:26:16
Mensagens: 6667
Localização: São Paulo / Catanduva
Offline
|
Mesmo assim "não tem a ver" com o Eclipse, mas sim com a linguagem Java em sí. O compilador reclamaria pelo mesmo motivo.
|
gotjava?
Doe sangue
What You See Is What You Get!
Apostilas de Java grátis!
RefsCALL - Bandeira Eletrônica para Árbitro de Futebol |
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/05/2005 17:53:19
|
ronaldorezende
JavaGuru
Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline
|
Já fiz o else e mesmo assim reclama.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/05/2005 17:58:33
|
ronaldorezende
JavaGuru
Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline
|
Mas por que iniciar com "=null" ? Isso não muda nada. Se antes ia acessar null, fazendo isso dá na mesma.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/05/2005 19:18:18
|
thingol
Moderador
Membro desde: 29/07/2004 16:10:13
Mensagens: 17543
Offline
|
Aham.
Quando você declara um membro de uma classe, ele é automaticamente inicializado com null, ou 0.
Quando você declara uma variável local, ela não é automaticamente inicializada com nada. Essa é uma diferença importante.
O problema é que, olhando pelo fluxo de seu programa, existe uma alternativa (pecaEstrutural instanceof Portico) onde "tesoura" não recebe valor nenhum. E depois dos ifs existe um logar onde se lê o valor de tesoura: if (tesoura != null)...
Provavelmente você deveria ter feito o seguinte: ter setado tesoura = null no if (pecaEstrutural instanceof Portico).
Há duas opiniões contrastantes:
- Uma delas diz que temos sempre de inicializar todas as variáveis locais com um valor conhecido, tal como null. Isso realmente "abafa" algum warning ou mensagem de erro do compilador.
- A outra diz que devemos inicializar o mínimo possível, e ver se ocorre a mensagem de erro de que a "variável não está inicializada". Essa opinião diz que o compilador pode ajudar-nos a encontrar erros de lógica, porque provavelmente não é que a variável não está inicializada - senão o default do Java seria inicializar tudo sempre - , mas sim que a lógica está incompleta em algum ponto, e esse erro na verdade é um aviso para você completar a sua lógica.
|
|
|
 |
![[Post New]](/templates/default/images/icon_minipost_new.gif) 27/05/2005 20:21:56
|
ronaldorezende
JavaGuru
Membro desde: 16/03/2005 14:26:23
Mensagens: 233
Offline
|
Realmente vou ter que deixar o =null.
Na minha lógica, ou tesoura ou portico vai ter que ficar obrigatoriamente setado com null.
|
|
|
 |
|
|