Problema com "Cannot reference a field before it is defined"

4 respostas
dudaskank

Do tópico da unidev que não faço idéia como responder ([url]http://forum.unidev.com.br/phpbb2/viewtopic.php?p=310416[/url]):

Pq esse código não compila?

public class Teste {

       private int ovo = 10;

       {
          coco = 20000;
          System.out.println("passou no bloco" + ovo + "coco: " + coco);
       }
       private int coco;


       public static void main(String[] args) {
          new Teste();
       }

       Teste(){
          System.out.println("Z");
       }

       {
          System.out.println("passou no blocoA" + coco);
       }

    }

e esse compila?

public class Teste {

       private int ovo = 10;

       {
          coco = 20000;
          System.out.println("passou no bloco" + ovo + "coco: ");
       }
       private int coco;


       public static void main(String[] args) {
          new Teste();
       }

       Teste(){
          System.out.println("Z");
       }

       {
          System.out.println("passou no blocoA" + coco);
       }

    }

Alguma idéia?

4 Respostas

dudaskank

Ninguém tem uma idéia da razão de estar ocorrendo isso?

Observem que:

{ coco = 20000; } private int coco;

ele aceita mas não aceita isso:

{ coco = 20000; System.out.println(coco); } private int coco;

Muito estranho… ah eu testei usando o Eclipse Europa e Java 6.

pimenta

A mensagem de erro responde sua pergunta.

Não é possível referenciar um campo antes dele ser definido.

No segundo código você usa a variável/campo antes de declará-lo. (ERRO!)

Abraços,

dudaskank

Eu havia pensado nisso, inclusive tinha respondido ao tópico isso aí na unidev rsrsrs…

Mas e quanto ao

{ coco = 20000; } private int coco;

que funciona? Não estou referenciando também antes aqui? Este é que é o mistério da coisa…

Mistéééééééééééééééééééérioo!

B

Não é mistério. Não é possível usar variáveis declaradas à frente no código no lado direito do código (RHS). Porém é possível usá-la no lado esquerdo, ou seja, somente em atribuições à variável.

Criado 24 de junho de 2008
Ultima resposta 25 de jun. de 2008
Respostas 4
Participantes 3